Maison >développement back-end >Tutoriel C#.Net >Comment extraire des données JSON imbriquées multicouches dans asp.net

Comment extraire des données JSON imbriquées multicouches dans asp.net

高洛峰
高洛峰original
2017-02-10 17:03:571506parcourir

Cet article présente principalement la méthode d'asp.net pour extraire des données json imbriquées multicouches. Il analyse en détail les étapes et les compétences opérationnelles associées d'asp.net pour analyser les données au format json sous forme d'exemples. valeur de référence. Les amis dans le besoin peuvent se référer à

Cet article décrit la méthode d'extraction de données json imbriquées multicouches dans asp.net. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Extraire json comme ceci dans .net 2.0 :

Copiez le code Le code est comme suit :

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

Espace de noms de référence :

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

Vous pouvez considérer le JSON ci-dessus comme un objet. Il vous suffit d'écrire la classe correspondante

.
public class UserInfo
{
public string name;
public int age;
public address addr;
}
public class address
{
public string city;
public string province;
}

Ensuite, écrivez ceci dans la zone d'analyse :

string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}";
UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));

Pour obtenir la valeur de City, il suffit : user.addr.City;

Il peut être implémenté de cette façon

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();

Comment ce json peut-il être dynamique ? Par exemple, laissez-vous saisir un json, tel que

Copier le code Le code est le suivant :

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

vous permet ensuite de saisir un objet, tel que la ville, puis le système affichera la valeur de Guangzhou. Dans ce cas, json est généré dynamiquement. Oui, j'aimerais savoir s'il existe un moyen de lire un tel json. (Notez que json est imbriqué à plusieurs niveaux.)

Utilisez simplement la traversée

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;
}

lors de l'appel :

string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}";
JObject jsonObj = JObject.Parse(jsonData);
Response.Write(GetJsonValue(jsonObj.Children(), "province"));

S'il existe plusieurs niveaux de tableaux imbriqués

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 vers XML :

Copier le code Le code est le suivant :

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

Pour plus d'articles liés à la méthode asp.net d'extraction de données json imbriquées multicouches, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn