【问题标题】:How to deserialize a json data array [duplicate]如何反序列化json数据数组[重复]
【发布时间】:2019-05-08 13:59:50
【问题描述】:

我有这个 json 文件:

{
  "timestamp": 1557323147422,
  "change_id": 11687520784,
  "data": [
      [ "new", 5775.0, 16530.0 ],
      [ "new", 5774.5, 360.0 ]
  ]
}

我需要设置一个类来反序列化它,但是数据数组给我带来了问题。

我尝试将数据映射到:

List<(string, double, double)>

但这不起作用。 列表有效,但它只是将问题推到了一步。

我可以把它映射到

List<dynamic>

然后我得到一个需要单独解析的 JArray 列表。

我需要的是能够将它映射到某个具有字符串和 2 个双精度值的类。

【问题讨论】:

  • 也许tuple ?
  • @demo 很好,他尝试了一个带有List&lt;(string, double, double)&gt;的元组
  • 是的,这不起作用:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'System.Tuple`3[System.String,System.Double,System .Double]' 因为该类型需要一个 JSON 对象(例如 {"name":"value"})才能正确反序列化。
  • 我可以做一个 List> 但之后我必须解析双打
  • 不。将来,如果您将使用 .NET Core >= 3.0,请阅读新的 MS .Net json 序列化程序,它将取代 JSON.NET。

标签: c# json.net deserialization


【解决方案1】:

你可以使用http://json2csharp.com/

我生成了这段代码:

public class RootObject
{
    public long timestamp { get; set; }
    public long change_id { get; set; }
    public List<List<object>> data { get; set; }
}

【讨论】:

  • 是的,这就是我在问题中写的内容,它只是将问题转移到解析对象。
【解决方案2】:

您的数组仍然是 JSON 中的 object 数组,它既不是元组也不是类型。

所以List&lt;List&lt;object&gt;&gt;(或IEnumerable&lt;IEnumerable&lt;object&gt;&gt;)似乎是唯一的选择。

【讨论】:

  • object[][] ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
相关资源
最近更新 更多