这是什么样的Json结构?四维数组?

时间:2013-04-24 19:15:51

标签: json servicestack

{"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结构?

5 个答案:

答案 0 :(得分:1)

对我而言,它看起来像一个包含深度为4级的数组数组的对象,因此它是一个对象,其中一个字段为4D array。如果你想获得4D数组,你需要从返回的json对象中获取filters字段

答案 1 :(得分:1)

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

答案 2 :(得分:1)

什么样的结构?不规则,真的。包含一个字段的对象,该字段包含一个数组,该数组包含第一个项目是字符串的数组,第二个项目是一个包含两个项目的数组,这两个项目是字符串,数字和字符串项目的数组.... phew!

这根本没问题!

答案 3 :(得分:0)

当你要求它使用数组代替对象来表示地图时,看起来大概就像杰克逊可能会产生的那样。

答案 4 :(得分:0)

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

根据您的评论进行修改:

嗯......因为你似乎能够依赖这些都是嵌套数组的事实,并且你正在寻找的标签将成为任何数组的第0个索引,你可以直接进入查找该标签的数组,然后处理第一个索引处的数组,并假设它将包含您期望的数据。这很难看,但看起来它会起作用(只要生成它的服务不会改变)。 C#有一个JSON反序列化器james.newtonking.com/pages/json-net.aspx。你应该使用它。