如何使用C#反序列化JSON?
如何使用C#反序列化JSON?
我有以下的代码:
var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);
responsecontent
中的输入是JSON,但它没有正确地反序列化成一个对象。我应该如何正确地进行反序列化?
admin 更改状态以发布 2023年5月24日
这里有一个回答 - 如何将JSON反序列化为C#动态对象?
使用Json.NET非常简单:
dynamic stuff = JsonConvert.DeserializeObject("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }"); string name = stuff.Name; string address = stuff.Address.City;
或者使用Newtonsoft.Json.Linq:
dynamic stuff = JObject.Parse("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }"); string name = stuff.Name; string address = stuff.Address.City;
我假设您没有使用Json.NET(Newtonsoft.Json NuGet包)。如果是这样,您应该尝试一下它。它具有以下功能:\n
- \n
- LINQ to JSON
- JsonSerializer可快速将.NET对象转换为JSON,并再次转换
- Json.NET可以可选地生成格式良好、缩进的JSON用于调试或显示
- 可以向类中添加类似于JsonIgnore和JsonProperty的属性,以自定义序列化类的方式
- 能够将JSON转换为XML,也可以将XML转换为JSON
- 支持多个平台:.NET,Silverlight和Compact Framework
\n
\n
\n
\n
\n
\n
\n请查看以下示例。在此示例中,使用JsonConvert类将对象转换为JSON并从JSON转换回对象。它有两个静态方法用于此目的。它们是SerializeObject(Object obj)和DeserializeObject(T json)。\n
using Newtonsoft.Json; Product product = new Product(); product.Name = "Apple"; product.Expiry = new DateTime(2008, 12, 28); product.Price = 3.99M; product.Sizes = new string[] { "Small", "Medium", "Large" }; string json = JsonConvert.SerializeObject(product); //{ // "Name": "Apple", // "Expiry": "2008-12-28T00:00:00", // "Price": 3.99, // "Sizes": [ // "Small", // "Medium", // "Large" // ] //} Product deserializedProduct = JsonConvert.DeserializeObject(json);