当前位置: 首页 > 编程笔记 >

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

宰父正真
2023-03-14
本文向大家介绍详解ASP.NET提取多层嵌套json数据的方法,包括了详解ASP.NET提取多层嵌套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"]);

4、JSON转XML:


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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍asp.net提取多层嵌套json数据的方法,包括了asp.net提取多层嵌套json数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net提取多层嵌套json数据的方法。分享给大家供大家参考,具体如下: 在.net 2.0中提取这样的json: 引用命名空间: 可以把上面的JSON看成一个对象.你只要写对应的类即可 然后在解析的地方这样写: 得到City的

  • 问题内容: 我正在尝试从数据JSON获取值。我已经成功遍历了JSON数据,几乎满足了我的需求! 在Python中运行以下命令: 给我这个: 我只想获得价值。这是关键。 如何进一步执行命令以仅返回值? 问题答案: 这是完整的输出吗?这本字典包含带有嵌套字典的列表,因此您应该这样处理。假设它被称为: 您的第一个地址是对象,然后是字典中的键,列表中的索引以及该字典的键: 输出: 编辑:根据您所得到的然后

  • 问题内容: 此JSON输出来自MongoDB聚合查询。我本质上需要将嵌套数据JSON解析为以下’ 和值。 我尝试了5种不同的技术来从中获得所需的信息,但是使用和模块却遇到了问题。 理想情况下,输出将是这样的: 问题答案: 注意:来自MongoDB的JSON响应实际上无效。JSON需要双引号(),而不是单引号()。 我不确定为什么您的响应中有单引号而不是双引号,但是从其外观上,您可以替换它们,然后只

  • 本文向大家介绍Android利用Gson解析嵌套多层的Json的简单方法,包括了Android利用Gson解析嵌套多层的Json的简单方法的使用技巧和注意事项,需要的朋友参考一下 首先先讲一个比较简单点的例子(最简单的我就不讲啦,网上很多),帮助新手理解Gson的使用方法: 比如我们要解析一个下面这种的Json: 首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些:

  • 我这里有一个很长的json:https://textup.fr/601885q4我想读一个“支付令牌合同”中的数据,特别是那些带有“id”的数据:1我的问题是,我不知道如何称呼特定的词汇,因为它们都有相同的名称。这是否可能,我还不习惯操作如此复杂的对象,因为我是初学者。我会尝试像:[“订单][x][“id”:1][“基本价格”]这样的东西,x是一个for循环,循环遍历每个“订单”显示。但是我无法将

  • 我需要将该模式格式提取到如下所示的治疗区域行项目: