Dieser Artikel stellt hauptsächlich die Methode von ASP.NET zum Extrahieren mehrschichtiger verschachtelter JSON-Daten und die Methode zur Verwendung der Drittanbieter-Klassenbibliothek Newtonsoft.Json zum Extrahieren mehrschichtiger verschachtelter JSON-Daten vor Erfahren Sie mehr darüber.
Das Beispiel in diesem Artikel beschreibt die Methode von ASP.NET, die die Klassenbibliothek Newtonsoft.Json eines Drittanbieters verwendet, um mehrschichtige verschachtelte JSON-Daten zu extrahieren. Das spezifische Beispiel lautet wie folgt.
Angenommen, die JSON-Zeichenfolge, die extrahiert werden muss, lautet wie folgt:
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
Zitat zuerst den Namespace:
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
Sie können die obige JSON-Zeichenfolge als Objekt betrachten. Schreiben Sie einfach die entsprechende Klasse (wenn Sie VS2013 für die Entwicklung verwenden, können Sie „Bearbeiten – Einfügen Spezial“ verwenden - „JSON Paste as Class“ konvertiert JSON-Strings schnell in Entitätsklassen folgt:
public class UserInfo { public string name; public int age; public address addr; } public class address { public string city; public string province; }
2. Um den Wert eines Attributs in JSON zu lesen, können Sie den folgenden Code verwenden:
string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}"; UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
3. Interpretieren Sie mehrschichtig verschachteltes JSON und erhalten Sie den Wert eines beliebigen Attributs:
Wenn die zu verarbeitende JSON-Zeichenfolge wie folgt lautet:
JObject jsonObj = JObject.Parse(jsonData); string name=jsonObj ["name"].ToString(); string age=jsonObj ["age"].ToString(); string city=((JObject )jsonObj ["addr"])["city"].ToString(); string province=((JObject )jsonObj ["addr"])["province"].ToString();
Dann geben Sie ein Objekt ein, z. B. „Stadt“, das System gibt „guangzhou“ aus, gibt „Alter“ ein und gibt „23“ aus ". Da JSON mehrstufig verschachtelt ist, muss es einzeln durchlaufen werden. Der Code lautet wie folgt:
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}};
Code zum Aufrufen von GetJsonValue:
public string GetJsonValue(JEnumerable<JToken> jToken, string key) { IEnumerator enumerator = jToken.GetEnumerator(); while (enumerator.MoveNext()) { JToken jc = (JToken)enumerator.Current; if (jc is JObject || ((JProperty)jc).Value is JObject) { return GetJsonValue(jc.Children(), key); } else { if (((JProperty)jc).Name == key) { return ((JProperty)jc).Value.ToString(); } } } return null; }
Wenn es sich um ein mehrstufiges verschachteltes Array handelt, können Sie auch den folgenden Code verwenden:
string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}"; JObject jsonObj = JObject.Parse(jsonData); Response.Write(GetJsonValue(jsonObj.Children(), "province"));
4. JSON zu XML:
string jsonData = "{\"addr\":[{\"city\":\"guangzhou\",\"province\":\"guangdong\"},{\"city\":\"guiyang\",\"province\":\"guizhou\"}]}"; JObject jsonObj = JObject.Parse(jsonData); JArray jar = JArray.Parse(jsonObj["addr"].ToString()); JObject j = JObject.Parse(jar[0].ToString()); Response.Write(j["city"]);
Kopieren Sie den Code wie folgt:
string xmlstr=(( XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).