Voici la chaîne json:
{"d":[{"numberOfRowsAdded":"26723"}]}
string json = DAO.getUploadDataSummary();
JObject uploadData = JObject.Parse(json);
string array = (string)uploadData.SelectToken("d");
Comment changer le code pour lire les valeurs dans 'numberOfRowsAdded?
JObject uploadData = JObject.Parse(json);
int rowsAdded = Convert.ToInt32((string)uploadData["d"][0]["numberOfRowsAdded"])
Vous devez convertir en JArray
:
string json = "{\"d\":[{\"numberOfRowsAdded\":\"26723\"}]}";
JObject parsed = JObject.Parse(json);
JArray array = (JArray) parsed["d"];
Console.WriteLine(array.Count);
Vous pouvez convertir votre JObject
en objet dynamic
.
Vous pouvez également convertir votre tableau en objet JArray
.
JObject yourObject;
//To access to the properties in "dot" notation use a dynamic object
dynamic obj = yourObject;
//Loop over the array
foreach (dynamic item in obj.d) {
var rows = (int)item.numberOfRowsAdded;
}
J'ai joué avec l'écriture d'une méthode générique qui peut lire n'importe quelle partie de ma chaîne json. J'ai essayé beaucoup de réponses sur ce fil et cela ne convenait pas à mon besoin. Voilà donc ce que j'ai trouvé. J'utilise la méthode suivante dans ma couche de service pour lire mes propriétés de configuration à partir de la chaîne json.
public T getValue<T>(string json,string jsonPropertyName)
{
var parsedResult= JObject.Parse(json);
return parsedResult.SelectToken(jsonPropertyName).ToObject<T>();
}
et voici comment vous l'utiliseriez:
var result = service.getValue<List<string>>(json, "propertyName");
Vous pouvez donc l'utiliser pour obtenir des propriétés spécifiques au sein de votre chaîne json et les convertir en tout ce dont vous avez besoin.