How does serde_json work?

57 points SorakaArmpits

Hi guys,

I was using serde_json to implement some stuff, however I was wondering how it worked internally. For example, in here

#[derive(Serialize, Deserialize)]
struct Person {
    name: String,
    age: u8,
    phones: Vec<String>,
}

fn typed_example() -> Result<()> {
    let data = r#"
        {
            "name": "John Doe",
            "age": 43,
            "phones": [
                "+44 1234567",
                "+44 2345678"
            ]
        }"#;
    let p: Person = serde_json::from_str(data)?;

    Ok(())
}

how does serde_json know what values to put in the struct automatically? I looked on github but I am still a noob so I have no clue where to look.