C# 在子级别数据时将 JSON 字符串解析为对象

本文关键字:字符串 JSON 对象 数据 | 更新日期: 2023-09-27 18:33:26

当数据处于子级别时,如何将json字符串解析为对象?

我的 json 数据如下所示:

{"d":{'item':[{'id':'1','name':'test'}
,{'id':'2','name':'test2'}]}}

当数据处于根级别时,我能够解析,但在这种情况下无法解析。我经历过类似的解析问题,但无法获得解决方案。

响应由第三方asmx服务提供,当通过jquery ajax调用调用时,它运行良好。

任何帮助或指导将不胜感激?

C# 在子级别数据时将 JSON 字符串解析为对象

将 JSON 对象重新创建为类,然后将其反序列化。

https://msdn.microsoft.com/de-de/library/bb412179%28v=vs.110%29.aspx

因此,"item"是您的父类,然后您有一个带有属性 id 和名称的项目列表。

然后,可以从反序列化对象中选择子数据。没有好方法可以在不操作字符串的情况下直接选择子数据。

添加对项目的引用,以"System.Web.Extensions.dll"。然后尝试:

 var jss = new JavaScriptSerializer();
 var result = jss.Deserialize<List<object>>("[{'id':'1','name':'test'},{'id':'2','name':'test2'}]");

您将需要使用 System.Web.Script.Serialization。您将需要删除"item":

您可以使用

System.Web.Helpers.Json.Decode

@{
    var data = System.Web.Helpers.Json.Decode("{'items':[{'id':'1','name':'test'}, {'id':'2','name':'test2'}]}");
}
@data.items[0].name
@data.items[1].id

我将首先创建两个类来表示您从 Web 服务获取的对象

public class First {
  public List<Second> item {get;set;} 
}
public class Second {
  public int Id {get;set}
  public string Name {get;set}
}

当使用 http://www.newtonsoft.com/json

First m = JsonConvert.DeserializeObject<First>("{"d":{'item':[{'id':'1','name':'test'},{'id':'2','name':'test2'}]}}");

响应中的第一个 d 可能会让事情变得有点困难。您可能需要具有 d 属性的第三个类。

但是现在你有一个强类型的响应来玩:-)