C# 在子级别数据时将 JSON 字符串解析为对象
本文关键字:字符串 JSON 对象 数据 | 更新日期: 2023-09-27 18:33:26
当数据处于子级别时,如何将json字符串解析为对象?
我的 json 数据如下所示:
{"d":{'item':[{'id':'1','name':'test'}
,{'id':'2','name':'test2'}]}}
当数据处于根级别时,我能够解析,但在这种情况下无法解析。我经历过类似的解析问题,但无法获得解决方案。
响应由第三方asmx服务提供,当通过jquery ajax调用调用时,它运行良好。
任何帮助或指导将不胜感激?
将 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 属性的第三个类。
但是现在你有一个强类型的响应来玩:-)