【问题标题】:JSON array deserialization -- is the order of elements always preserved?JSON数组反序列化——元素的顺序是否总是保留?
【发布时间】:2011-04-12 09:44:33
【问题描述】:

在 C#/.NET 中反序列化 JSON 数组时,是否始终保留元素的顺序?

编辑:当前使用的库是 .NET 3.5 的 System.Runtime.Serialization.Json.DataContractJsonSerializer

【问题讨论】:

  • 你的意思是JSON格式的数组吗?
  • 当你说数组时,你是指一个真正的数组(["foo", "bar", "baz"]),还是一个对象({"foo": 1, "baz": 2})?任何理智的实现都将保留数组的顺序。我不希望保留对象中键值条目的顺序(这无关紧要,因为 RFC 说对象是“无序集合”),但有些库会。
  • @Matt:前者是数组,后者是对象。我怀疑你是正确的,只有前者保留了它的顺序。
  • @Steven,对。我正在检查,因为很多人错误地将 JavaScript 对象称为“关联数组”。
  • @Steven/Matt:是的,JSON 格式的数组(例如,["foo", "bar", "baz"]),而不是 JS/JSON 对象。我也相信订单应该/应该保留,但我无法找到具体的文档。

标签: c# .net arrays json serialization


【解决方案1】:

是的。

JSON 规范确实指定为数组保留顺序,因为它们是 有序 值集合:JSON.org

【讨论】:

    【解决方案2】:

    我会说这取决于您选择的任务库的实现。我您的库文档没有说明任何内容,我认为它是实现细节并且不能被信任(可以在下一个版本中更改)。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多