asp.net で多層のネストされた JSON データを抽出する方法

高洛峰
リリース: 2017-02-10 17:03:57
オリジナル
1493 人が閲覧しました

この記事では、asp.net が多層ネストされた json データを抽出する方法を主に紹介し、asp.net の json 形式データを解析する手順と関連する操作スキルを例の形式で詳細に分析します。友人はそれを参照できます

この記事では、asp.net で多層のネストされた json データを抽出する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

.net 2.0 でこのような json を抽出します:

コードをコピーします コードは次のとおりです:

{"name":"lily"," age":23," addr":{"city":guangzhou,"province":guangdong}}

Reference namespace:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
ログイン後にコピー

上記の JSON をオブジェクトとして考えることができます。対応するクラスを記述します

public class UserInfo
{
public string name;
public int age;
public address addr;
}
public class address
{
public string city;
public string province;
}
ログイン後にコピー

次に、解析場所に次のように記述します:

string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}";
UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
ログイン後にコピー

City の値を取得するには、単に user.addr.City;

これも実装できます

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();
ログイン後にコピー

この json はどうなっているのでしょうか?たとえば、

のようなjsonを入力します。コードをコピーします コードは次のとおりです:

{"name":"lily","age":23,"addr":{"city" :guangzhou,"province": guangdong}};

次に、city などのオブジェクトを入力すると、システムは値 guangzhou を出力します。この場合、json は動的に生成されるかどうかを知りたいです。このようなjsonを読み取る方法があります。 (json は複数レベルでネストされていることに注意してください。)

呼び出し時にトラバーサル

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;
}
ログイン後にコピー

を使用するだけです:

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"]);
ログイン後にコピー

JSON へXML:

コードをコピー コードは次のとおりです:

string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();

その他の asp.net による多層ネストの抽出json データメソッドに関連する記事は、PHP 中国語 Web サイトに注意してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!