1
{"filters": 
[
    [
      "Color",
      [
        [
          "Blue",
          629,
          "t12-15=blue"
        ],
        [
          "Green",
          279,
          "t12-15=green"
        ]
      ]
    ],
    [
      "Style",
      [
        [
          "Contemporary / Modern",
          331,
          "t6-11=contemporary+modern"
        ],
        [
          "Transitional",
          260,
          "t6-11=transitional"
        ],
      ]
    ]
]}

这对我来说看起来像是一个 4 维数组,但是当我尝试使用 ServiceStack.Text.JsonSerializer 对其进行反序列化时,我没有得到预期的结果。

看起来值“颜色”和“样式”本身不在数组中。这是一个什么样的Json结构?

4

5 回答 5

1

什么样的结构?不正常,真的。一个包含一个字段的对象,该字段包含一个数组,其中第一项是字符串,第二项是一个数组,其中包含两个项,即字符串、数字和字符串项的数组....呸!

这一点都没有错!

于 2013-04-24T19:27:35.407 回答
1

对我来说,它看起来就像一个包含 4 层深度的数组数组的对象,因此它是一个具有一个字段的对象,即4D 数组。如果要获取 4D 数组,则需要filters从返回的 json 对象中获取字段

于 2013-04-24T19:19:59.183 回答
1

它确实是一个包含在对象中的数组数组数组。这很可怕,但我不明白为什么 JsonSerializer 会窒息它。

于 2013-04-24T19:20:45.483 回答
0

Style 和 Color 只是它们所在数组的第一个索引。这几乎可以肯定不是预期的。如果有任何东西 Style 可能应该是下一个 Array 的标签(对象)而不是它的兄弟,不是吗?显而易见的后续问题是谁/什么在产生这个 JSON,以及谁/什么在消费它......正如 bmarguiles 所问......你在这里的期望是什么,因为 JSON 在语法上是有效的,如果它没有做你期待什么……你期待什么?

根据您的评论进行编辑:

好吧...因为您似乎可以依赖这些都是嵌套数组并且您要查找的标签将是任何数组的第 0 个索引,所以您可以递归到数组中查找对于该标签,然后假设它将包含您期望的数据,则处理位于第一个索引处的数组。它很丑陋,但看起来它会起作用(只要生成它的服务没有改变)。C# 有一个 JSON 反序列化器james.newtonking.com/pages/json-net.aspx。你应该只使用它。

于 2013-04-24T19:25:10.170 回答
0

当您要求 Jackson 使用数组而不是对象来表示地图时,它看起来大致类似于 Jackson 可能会产生的结果。

于 2013-04-24T19:22:14.537 回答