当前位置: 移动技术网 > IT编程>开发语言>.net > 详解ASP.NET提取多层嵌套json数据的方法

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

2017年12月08日  | 移动技术网IT编程  | 我要评论

神通广大乡巴佬,套装门安装,真的 宋仲基 歌词

本文实例讲述了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"]);

4、json转xml:

复制代码 代码如下:

string xmlstr=((xmldocument)jsonconvert.deserializexmlnode(jsondata)).innerxml.tostring();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网