この記事では、ASP.NET で多層ネストされた json データを抽出する方法と、サードパーティのクラス ライブラリ Newtonsoft.Json を使用して多層ネストされた json データを抽出する方法を主に紹介します。興味がある方は詳細をご覧ください。 。
この記事の例では、サードパーティのクラス ライブラリ Newtonsoft.Json を使用して、多層のネストされた JSON データを抽出する ASP.NET の方法について説明します。具体的な例は次のとおりです。
抽出する必要がある json 文字列が次のとおりであるとします。
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
まず名前空間を引用符で囲みます:
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
上記の json 文字列をオブジェクトとして扱うことができ、対応するクラスを記述するだけです。 (開発に VS2013 を使用する場合は、「編集 - 形式を選択して貼り付け - JSON をクラスとして貼り付け」を使用して、JSON 文字列をエンティティ クラスにすばやく変換できます)
public class UserInfo { public string name; public int age; public address addr; } public class address { public string city; public string province; }
1. json 文字列をエンティティに変換します。オブジェクトのコードは次のとおりです:
string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}"; UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
2. json の属性の値を読み取るには、次のコードを使用できます:
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();
3. 多層ネストされた json を解釈します。そして、任意の属性の値を取得します:
処理する必要がある json 文字列が次の場合:
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}};
次に、「city」などのオブジェクトを入力すると、システムは「guangzhou」を出力します。 、「年齢」を入力すると「23」と出力されます。 json はマルチレベルでネストされているため、1 つずつトラバースする必要があります。コードは次のとおりです。
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; }
GetJsonValue を呼び出すコード:
string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}"; JObject jsonObj = JObject.Parse(jsonData); Response.Write(GetJsonValue(jsonObj.Children(), "province"));
マルチレベルでネストされている場合。配列の場合は、次のコードを使用することもできます:
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"]);
4. JSON から XML へ:
次のようにコードをコピーします:
string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData) ).InnerXml.ToString();
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
多層のネストされた JSON データを抽出する ASP.NET の方法の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。