JSON:使用密钥中的复杂对象序列化字典

时间:2016-02-18 07:41:06

标签: json

key是复杂类型时序列化字典的最佳方法是什么。例如,请考虑无效 json

[
   {ParentId:1, ParentName:'X'}:
        [{'ChildId':'1', 'ChildName':'a'}, {'ChildId':'2', 'ChildName':'b'}],

   {ParentId:2, ParentName:'Y'}:
        [{'ChildId':"3", 'ChildName':'c'}]}
]

有没有办法正确序列化?

2 个答案:

答案 0 :(得分:1)

不幸的是,这不是一个有效的json,所以答案是否:-(键必须是字符串。你可以重新组织你的数据结构,将你的子列表包装成一个" parent"对象一个id和一个名字!

基本上它看起来像:

[
    {
        "ParentId": 1,
        "ParentName": "X",
        "children": [
            {
                "ChildId": 1,
                "ChildName": "a"
            },
            {
                "ChildId": 2,
                "ChildName": "b"
            }
        ]
    },
    {
        "ParentId": 2,
        "ParentName": "Y",
        "children": [
            {
                "ChildId": 3,
                "ChildName": "c"
            }
        ]
    }
]

您可以在此处找到JSON的规格:https://tools.ietf.org/html/rfc4627

答案 1 :(得分:1)

您可以使用键作为字符串和值来包装json作为复杂对象。

此外,复杂类型的键也应该是字符串。

例如:

[
  {
    "name": {
      "ParentId": 1,
      "ParentName": "X"
    },
    "value": [
      {
        "ChildId": "1",
        "ChildName": "a"
      },
      {
        "ChildId": "2",
        "ChildName": "b"
      }
    ]
  },
  {
    "name": {
      "ParentId": 2,
      "ParentName": "Y"
    },
    "value": [
      {
        "ChildId": "3",
        "ChildName": "c"
      }
    ]
  }
]