【问题标题】:Deserializing JSON object into .NET List将 JSON 对象反序列化为 .NET 列表
【发布时间】:2012-03-07 16:46:59
【问题描述】:

JSON 是使用 Jersey 的 JAXB 序列化程序在 Java 中创建的。 我需要在 .NET 应用程序中反序列化它。 问题出在序列化数组中: 如果数组包含多个项目 JSON 对象是这样的:

{"users":[{"name":"user1", "email":"user1@email.com"},{"name":"user2", "email":"user2@email.com"}]}

但是当对象只包含一项时,它被序列化为一个简单的对象

{"users":{"name":"user1", "email":"user1@email.com"}}

我想将其反序列化为 .NET 对象。

public class UserList{
   public List<User> users {get;set;}
}
public class User{
   public string name {get;set;}
   public string email {get;set;}
}

标准 .NET 反序列化程序不理解 second 情况。我尝试了 JSON.NET 默认反序列化器,但它引发了异常。也许它需要正确配置? 你能建议一些如何处理第一种和第二种情况的方法吗? 附言我无法访问 Java 序列化程序

【问题讨论】:

  • 你确定你不能改变它的序列化方式吗?因为这种方式没有多大意义。
  • 是的,因为它是第三方产品

标签: .net json web-services serialization jaxb


【解决方案1】:

在 Json.Net 中,您可以创建一个可以像这样处理 JSON 的自定义转换器。

查看Deserializing JSON when sometimes array and sometimes object 了解具体操作方法。

【讨论】:

  • @downvoter,请评论您认为我的回答有什么问题?
【解决方案2】:

为此我一直在使用 Newtonsoft.JSON,它确实很好地处理了序列化集合。试试看。

【讨论】:

  • JSON.NET = Newtonsoft.JSON 据我所知......它在调用JsonConvert.DeserializeObject&lt;UserList&gt;(json) 时引发了第二种情况的异常。你能发布你的解决方案吗?
  • public class ObjectWithAList { [JsonProperty("List")] public List&lt;object&gt; List = new List&lt;object&gt;(); }。这个类很容易被Newtonsoft.Json.JsonSerializer序列化有什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2014-10-06
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多