如何使用C#反序列化JSON?

10 浏览
0 Comments

如何使用C#反序列化JSON?

我有以下的代码:

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);

responsecontent中的输入是JSON,但它没有正确地反序列化成一个对象。我应该如何正确地进行反序列化?

admin 更改状态以发布 2023年5月24日
0
0 Comments

这里有一个回答 - 如何将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;

0
0 Comments

我假设您没有使用Json.NET(Newtonsoft.Json NuGet包)。如果是这样,您应该尝试一下它。它具有以下功能:\n

    \n

  1. LINQ to JSON
  2. \n

  3. JsonSerializer可快速将.NET对象转换为JSON,并再次转换
  4. \n

  5. Json.NET可以可选地生成格式良好、缩进的JSON用于调试或显示
  6. \n

  7. 可以向类中添加类似于JsonIgnore和JsonProperty的属性,以自定义序列化类的方式
  8. \n

  9. 能够将JSON转换为XML,也可以将XML转换为JSON
  10. \n

  11. 支持多个平台:.NET,Silverlight和Compact Framework
  12. \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);

0