使用 C# 反序列化 JSON






4.81/5 (25投票s)
将 JSON 字符串转换为 C# 对象列表
引言
编写此教程的动机是,你有一个 JSON 字符串,并且想要将其转换为一个 C# 对象列表(List<>)而不是单个 C# 对象,而 .NET Framework 并没有提供开箱即用的工具来实现这一点。以下展示了如何操作。使用代码
你正在使用 jQuery 或其他方式进行 XHR 请求,进行一些花哨的 Ajax 请求,但厌倦了使用 Request["setting"] 从客户端获取数据,渴望一种强类型的方法?停止!我正好有你需要的,它支持单个对象,甚至对象列表(数组)!示例:
将 JSON 与 .NET 混合的简单有效方法
编写此教程的动机是,你有一个 JSON 字符串,并且想要将其转换为一个 C# 对象列表(List<>)而不是单个 C# 对象,而 .NET Framework 并没有提供开箱即用的工具来实现这一点。以下展示了如何操作。使用代码
你正在使用 jQuery 或其他方式进行 XHR 请求,进行一些花哨的 Ajax 请求,但厌倦了使用 Request["setting"] 从客户端获取数据,渴望一种强类型的方法?停止!我正好有你需要的,它支持单个对象,甚至对象列表(数组)!示例:
Single: { "field1":"value1","field2":"value2" } Array: [ { "field1":"value1","field2":"value2" }, { "field1":"value1","field2":"value2" } ]对于单个对象,.NET Framework 已经提供了关键,你需要创建一个类,该类的公共字段或属性与 JSON 字符串中的字段名称匹配,例如
public class Test { public string field1 { get; set; } public string field2 { get; set; } }用于反序列化单个 JSON 的代码如下
Test myDeserializedObj = (Test)JavaScriptConvert.DeserializeObject(Request["jsonString"], typeof(Test));就这样!你获得了一个带有客户端数据的强类型对象,太棒了!但是,如果我想获取相同类型的数据列表,比如一个数组,该怎么办? .NET Framework 没有提供这个问题的答案。你需要下载并引用以下 DLL,完成后
List<test> myDeserializedObjList = (List<test>)Newtonsoft.Json.JsonConvert.DeserializeObject(Request["jsonString"], typeof(List<test>));是的!你完成了 :) 这有多简单?它非常适合使用 .NET 后端的轻量级 Ajax 应用程序。值得关注的点
将 JSON 与 .NET 混合的简单有效方法