Intento usar una API que use la siguiente estructura de ejemplo para su json devuelto
[
{
"customer":{
"first_name":"Test",
"last_name":"Account",
"email":"[email protected]",
"organization":"",
"reference":null,
"id":3545134,
"created_at":"2013-08-06T15:51:15-04:00",
"updated_at":"2013-08-06T15:51:15-04:00",
"address":"",
"address_2":"",
"city":"",
"state":"",
"zip":"",
"country":"",
"phone":""
}
},
{
"customer":{
"first_name":"Test",
"last_name":"Account2",
"email":"[email protected]",
"organization":"",
"reference":null,
"id":3570462,
"created_at":"2013-08-12T11:54:58-04:00",
"updated_at":"2013-08-12T11:54:58-04:00",
"address":"",
"address_2":"",
"city":"",
"state":"",
"zip":"",
"country":"",
"phone":""
}
}
]
JSON.net funcionaría muy bien con algo como la siguiente estructura
{
"customer": {
["field1" : "value", etc...],
["field1" : "value", etc...],
}
}
Pero no puedo averiguar cómo hacer que esté contento con la estructura proporcionada.
El uso del JsonConvert.DeserializeObject (contenido) predeterminado da como resultado el número correcto de Cliente, pero todos los datos son nulos.
Hacer algo en CustomerList (abajo) da como resultado una excepción "No se puede deserializar la matriz JSON actual"
public class CustomerList
{
public List<Customer> customer { get; set; }
}
Pensamientos
Respuestas:
Puede crear un nuevo modelo para deserializar su Json
CustomerJson
:Y puede deserializar su json fácilmente:
Espero eso ayude !
Documentación: serializar y deserializar JSON
fuente
DeserializeObject()
es lento en teléfonos Android que ejecutan ARM. ¿Alguna mejor solución para ese caso?JObject.Parse(json);
Para aquellos que no quieran crear ningún modelo, use el siguiente código:
Nota: esto no funciona para su cadena JSON. Esta no es una solución general para ninguna estructura JSON.
fuente
var result = JsonConvert.DeserializeObject<Tuple<string, string, string>>(content);
IEnumerable
implementaciones (3 en comparación con una List <Tuple>). En segundo lugar, su solución implica dos claves distintas: 1 para cada diccionario. ¿Qué sucede si varios clientes tienen el mismo nombre? No habría diferenciación en las claves. Su solución no tiene en cuenta este conflicto.var result = JsonConvert.DeserializeObject<Tuple<string, string, string>>(content);
que funcionaría. Aparentemente no funcionaUsando la respuesta aceptada, debe acceder a cada registro usando
Customers[i].customer
, y necesita unaCustomerJson
clase adicional , lo cual es un poco molesto. Si no desea hacer eso, puede usar lo siguiente:Tenga en cuenta que estoy usando un
List<>
, no un Array. Ahora crea la siguiente clase:fuente
Ligera modificación a lo dicho anteriormente. Mi formato Json, que valida fue
Usando la respuesta de AlexDev, hice este bucle para cada niño, creando un lector a partir de él.
fuente
Modificación adicional de JC_VA, tome lo que tiene y reemplace MyModelConverter con ...
Esto debería funcionar para json que es
o
ambos terminarán siendo analizados como si fueran
fuente