json rust json-deserialization serde

json - ¿Ejemplos de deserialización de Just Rust & Serde?



json-deserialization (1)

La mayoría de las estructuras de datos estándar son serializables, por lo que las siguientes estructuras deberían funcionar:

#[derive(Serialize, Deserialize)] struct Data { FirstName: String, LastName: String, Age: u32, Address: Address, PhoneNumbers: Vec<String> } #[derive(Serialize, Deserialize)] struct Address { Street: String, City: String, Country: String }

Si algunos de los campos en la entrada pueden estar ausentes, entonces los campos de la estructura correspondiente deberían ser Option<T> lugar de solo T

Tenga en cuenta que es posible nombrar los campos de una manera más "oxidada", es decir, snake_case, porque serde admite el cambio de nombre de las anotaciones:

#[derive(Serialize, Deserialize)] struct Address { #[serde(rename="Street")] street: String, #[serde(rename="City")] city: String, #[serde(rename="Country")] country: String }

This problema también es relevante para renombrar campos.

Estoy tratando de averiguar cómo deserializar JSON en una estructura usando Serde. Por ejemplo, el ejemplo JSON en la propia documentación de serde_json contiene los siguientes datos:

{ "FirstName": "John", "LastName": "Doe", "Age": 43, "Address": { "Street": "Downing Street 10", "City": "London", "Country": "Great Britain" }, "PhoneNumbers": [ "+44 1234567", "+44 2345678" ] }

Ahora, si asumimos que los datos anteriores están en una variable "entrada" y el siguiente fragmento de código:

let deserialized_data: Data = serde_json::from_str(input).unwrap();

... ¿Cómo debería verse la estructura de los Data ?