• 详解ASP.NET提取多层嵌套json数据的方法


    本篇文章主要介绍了ASP.NET提取多层嵌套json数据的方法,利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,有兴趣的可以了解一下。

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下。

    假设需要提取的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”,输入“age”,就输出“23”。由于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;
    }
    调用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"]);
  • 相关阅读:
    React(七)独立组件间的共享Mixins
    React(六)Props属性
    React(五)State属性
    React(四)组件生命周期
    React(三)JSX内置表达式
    Python(一)缺点
    Vue(二十六)父子组件通信
    React(二)组件
    React(一)使用脚手架创建React项目
    Vue(二十五)打包后路径报错问题
  • 原文地址:https://www.cnblogs.com/sjqq/p/6435617.html
Copyright © 2020-2023  润新知