Jaka jest różnica między JsonConvert.DeserializeObject i JObject.Parse? O ile mogę powiedzieć, obie biorą ciąg i znajdują się w bibliotece Json.NET. Jaka sytuacja sprawiłaby, że byłaby to wygodniejsza od drugiej, czy to głównie preferencje?JObject.Parse vs JsonConvert.DeserializeObject
Dla przykładu, oto przykład, w którym ja używam obu do zrobienia dokładnie tego samego - parsuj ciąg Json i zwróć listę jednego z atrybutów Json.
public ActionResult ReadJson()
{
string countiesJson = "{'Everything':[{'county_name':null,'description':null,'feat_class':'Civil','feature_id':'36865',"
+"'fips_class':'H1','fips_county_cd':'1','full_county_name':null,'link_title':null,'url':'http://www.alachuacounty.us/','name':'Alachua County'"+ ",'primary_latitude':'29.7','primary_longitude':'-82.33','state_abbreviation':'FL','state_name':'Florida'},"+
"{'county_name':null,'description':null,"+ "'feat_class':'Civil','feature_id':'36866','fips_class':'H1','fips_county_cd':'3','full_county_name':null,'link_title':null,'url':'http://www.bakercountyfl.org/','name':'Baker County','primary_latitude':'30.33','primary_longitude':'-82.29','state_abbreviation':'FL','state_name':'Florida'}]}";
//Can use either JSONParseObject or JSONParseDynamic here
List<string> counties = JSONParseObject(countiesJson);
JSONParseDynamic(countiesJson);
return View(counties);
}
public List<string> JSONParseObject(string jsonText)
{
JObject jResults = JObject.Parse(jsonText);
List<string> counties = new List<string>();
foreach (var county in jResults["Everything"])
{
counties.Add((string)county["name"]);
}
return counties;
}
public List<string> JSONParseDynamic(string jsonText)
{
dynamic jResults = JsonConvert.DeserializeObject(jsonText);
List<string> counties = new List<string>();
foreach(var county in jResults.Everything)
{
counties.Add((string)county.name);
}
return counties;
}
Dzięki za dobrze przemyślanej odpowiedzi! Obiekt i deskryptory dynamiczne mają teraz sens. Podany przykład jest również świetny - wygląda to znacznie łatwiej niż w przypadku JsonParseDynamic. – hubatish
Bez problemu; cieszę się, że mogłem pomóc! –
Chciałbym, żeby to było w [oficjalnych dokumentach] (http://www.newtonsoft.com/json/help/html/serializingjson.htm). –