ホームページ  >  記事  >  バックエンド開発  >  ASP.NET の多層ネストされた JSON データを抽出する方法の詳細な説明

ASP.NET の多層ネストされた JSON データを抽出する方法の詳細な説明

高洛峰
高洛峰オリジナル
2017-02-10 17:02:021972ブラウズ

この記事では、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 サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。