I need to bring the list inside "listaEncProv" from the following JSON:
{
"$id": "1",
"Exito": true,
"StatusCode": 200,
"Error": null,
"Data": {
"$id": "2",
"listaEncProv": [
{
"$id": "3",
"nroCertificado": 1,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "4",
"nroCertificado": 2,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "5",
"nroCertificado": 3,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "6",
"nroCertificado": 4,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "7",
"nroCertificado": 5,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "8",
"nroCertificado": 6,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "9",
"nroCertificado": 7,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "10",
"nroCertificado": 8,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "11",
"nroCertificado": 9,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "12",
"nroCertificado": 10,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "13",
"nroCertificado": 11,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "14",
"nroCertificado": 12,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "15",
"nroCertificado": 13,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "16",
"nroCertificado": 14,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "17",
"nroCertificado": 15,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "18",
"nroCertificado": 16,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "19",
"nroCertificado": 17,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "20",
"nroCertificado": 18,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "21",
"nroCertificado": 19,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "22",
"nroCertificado": 20,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "23",
"nroCertificado": 21,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "24",
"nroCertificado": 22,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "25",
"nroCertificado": 23,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "26",
"nroCertificado": 24,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "27",
"nroCertificado": 25,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "28",
"nroCertificado": 26,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "29",
"nroCertificado": 27,
"totalParcial": null,
"modifPrecios": null
},
{
"$id": "30",
"nroCertificado": 28,
"totalParcial": null,
"modifPrecios": null
}
],
"listaEncDef": []
}
}
The idea is to bring all those items into a List.
var contenido = result.Content.ReadAsStringAsync().Result;
JObject resultados = JObject.Parse(contenido);
foreach (var item in resultados["Data"])
{
var lista1 = resultados["listaEncProv"].ToList();
foreach (var item2 in lista1)
{
Certificaciones nuevoCert = new Certificaciones();
nuevoCert.Id = (string)resultados["$id"];
nuevoCert.nroCertificado = (int)resultados["nroCertificado"];
if (resultados["totalParcial"] == null)
{
nuevoCert.totalParcial = 0;
}
else
{
nuevoCert.totalParcial = (int)resultados["totalParcial"];
}
if (resultados["modifPrecios"] == null)
{
nuevoCert.totalParcial = 0;
}
else
{
nuevoCert.totalParcial = (int)resultados["modifPrecios"];
}
lista.Add(nuevoCert);
}
}
But it gives me the following error:
Error de servidor en la aplicación '/'. El valor no puede ser nulo. Nombre del parámetro: source Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.ArgumentNullException: El valor no puede ser nulo. Nombre del parámetro: source``
CodePudding user response:
you can do it this way
var contenido = result.Content.ReadAsStringAsync().Result;
JObject resultados = JObject.Parse(contenido);
List<Certificaciones> lista1 = resultados["Data"]["listaEncProv"].ToObject<List<Certificaciones>>();
class
public class Certificaciones
{
[JsonProperty("$id")]
public string Id { get; set; }
public int? nroCertificado { get; set; }
public int? totalParcial { get; set; }
public int? modifPrecios { get; set; }
}
CodePudding user response:
Why not de-serialize to strongly typed Model
class for your JSON
string and then get your properties from there and add them to your list? I am giving an example of how you would de-serialize your JSON
to a Model
class:
You can refer to a working example here: https://dotnetfiddle.net/5aJFfz
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var myJsonString=@"{'$id':'1','Exito':true,'StatusCode':200,'Error':null,'Data':{'$id':'2','listaEncProv':[{'$id':'3','nroCertificado':1,'totalParcial':null,'modifPrecios':null},{'$id':'4','nroCertificado':2,'totalParcial':null,'modifPrecios':null},{'$id':'5','nroCertificado':3,'totalParcial':null,'modifPrecios':null},{'$id':'6','nroCertificado':4,'totalParcial':null,'modifPrecios':null},{'$id':'7','nroCertificado':5,'totalParcial':null,'modifPrecios':null},{'$id':'8','nroCertificado':6,'totalParcial':null,'modifPrecios':null},{'$id':'9','nroCertificado':7,'totalParcial':null,'modifPrecios':null},{'$id':'10','nroCertificado':8,'totalParcial':null,'modifPrecios':null},{'$id':'11','nroCertificado':9,'totalParcial':null,'modifPrecios':null},{'$id':'12','nroCertificado':10,'totalParcial':null,'modifPrecios':null},{'$id':'13','nroCertificado':11,'totalParcial':null,'modifPrecios':null},{'$id':'14','nroCertificado':12,'totalParcial':null,'modifPrecios':null},{'$id':'15','nroCertificado':13,'totalParcial':null,'modifPrecios':null},{'$id':'16','nroCertificado':14,'totalParcial':null,'modifPrecios':null},{'$id':'17','nroCertificado':15,'totalParcial':null,'modifPrecios':null},{'$id':'18','nroCertificado':16,'totalParcial':null,'modifPrecios':null},{'$id':'19','nroCertificado':17,'totalParcial':null,'modifPrecios':null},{'$id':'20','nroCertificado':18,'totalParcial':null,'modifPrecios':null},{'$id':'21','nroCertificado':19,'totalParcial':null,'modifPrecios':null},{'$id':'22','nroCertificado':20,'totalParcial':null,'modifPrecios':null},{'$id':'23','nroCertificado':21,'totalParcial':null,'modifPrecios':null},{'$id':'24','nroCertificado':22,'totalParcial':null,'modifPrecios':null},{'$id':'25','nroCertificado':23,'totalParcial':null,'modifPrecios':null},{'$id':'26','nroCertificado':24,'totalParcial':null,'modifPrecios':null},{'$id':'27','nroCertificado':25,'totalParcial':null,'modifPrecios':null},{'$id':'28','nroCertificado':26,'totalParcial':null,'modifPrecios':null},{'$id':'29','nroCertificado':27,'totalParcial':null,'modifPrecios':null},{'$id':'30','nroCertificado':28,'totalParcial':null,'modifPrecios':null}],'listaEncDef':[]}}";
var myList=JsonConvert.DeserializeObject<Root>(myJsonString);
//var contenido = result.Content.ReadAsStringAsync().Result;
//var myList=JsonConvert.DeserializeObject<Root>(contenido);
//Get your listaEncProv below
var lista1 = myList.Data.listaEncProv;
//You can iterate over your list to get specific data as required
foreach(var item in lista1)
{
Console.WriteLine(item.Id);
Console.WriteLine(item.modifPrecios);
Console.WriteLine(item.nroCertificado);
Console.WriteLine(item.totalParcial);
//Add to your list here as required
}
}
}
public class ListaEncProv
{
[JsonProperty("$id")]
public string Id { get; set; }
public int nroCertificado { get; set; }
public object totalParcial { get; set; }
public object modifPrecios { get; set; }
}
public class Data
{
[JsonProperty("$id")]
public string Id { get; set; }
public List<ListaEncProv> listaEncProv { get; set; }
public List<object> listaEncDef { get; set; }
}
public class Root
{
[JsonProperty("$id")]
public string Id { get; set; }
public bool Exito { get; set; }
public int StatusCode { get; set; }
public object Error { get; set; }
public Data Data { get; set; }
}