带有重复标记的Json数组

时间:2018-03-13 07:01:52

标签: c# json json-deserialization

我有以下json:

{
  "OBECT_TAG":
  [
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    },
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    },
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    }
  ]
}

我希望为数组中的每个对象重复OBJECT_TAG。我试过这个并且c#中的反序列化失败了。是json兼容还是什么使它符合要求?

{
  [
    "OBECT_TAG":
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    },
    "OBECT_TAG":
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    },
    "OBECT_TAG":
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    }
  ]
}

如果有必要,原因是对象变得非常大,有很多级别,所以当手动编辑时,很容易识别每个主对象的起始位置,同时保持数组和简单的c#对象反序列化。

编辑:保留根对象

非常重要

1 个答案:

答案 0 :(得分:5)

Json对象具有名称和值的属性,其中value可以是另一个对象\ array \ primitive value。

Json数组包含其他没有名称的对象\ arrays \ primitives。

你问题的Json违反了上述两个方面。

<div class="title m-b-md">
    {!!$name!!}
</div>

无效,因为没有属性名称。如果要将数组放在对象中,则必须将其命名为:

{
  [...]
}

然后

{
    "MyArray": [...]
}

无效,因为数组只是未命名值的列表,并且您尝试为其条目命名。

你能想到的最接近的是对象数组,其中每个对象包含带标记的命名属性,并且该标记对象包含属性:

[
    "OBECT_TAG":
    {
      "PROPERTY1" : "value1",
      "PROPERTY2" : "value2",
    }
]