【问题标题】:How to create custom JSON data structure?如何创建自定义 JSON 数据结构?
【发布时间】:2012-12-31 13:13:02
【问题描述】:

包含 100 个对象的 JSON 数据结构的输出应如下所示:

[{
    "Value": "Sens1_001",
    "Parent": Null,
    "Child": {
        "Value": "Sens2_068",
        "Parent":"Sens1_001",
        "Child" : {
            "Value": "Sens3_034",
            "Parent": "Sen2_068",
            "Child": null,
            "z_cordinate": 5
                  },
        "z_cordinate": 0
            },
        "z_cordonate": -5
    },
{
    "Value": "Sens1_002",
    "Parent": Null,
    "Child": {
        "Value": "Sens2_037",
        "Parent":"Sens1_002",
        "Child" : {
            "Value": "Sens3_099",
                              "Parent": "Sen2_037",
                              "Child": null,
                              "z_cordinate": 5
                   },
             "z_cordinate": 0
             },
  "z_cordonate": -5
},
{
   "Value": "Sens1_003",
    "Parent": Null,
    "Child": {
        "Value": "Sens2_012",
        "Parent":"Sens1_003",
        "Child" : {
            "Value": "Sens3_054",
            "Parent": "Sen2_012",
            "Child": null,
            "z_cordinate": 5
                  },
        "z_cordinate": 0
             },   
        "z_cordonate": -5
},
.
.
. // till 100th object
{
    "Value": "Sens1_100",
    "Parent": Null,
    "Child": {
        "Value": "Sens2_001",
        "Parent":"Sens1_100",
        "Child" : {
            "Value": "Sens3_021",
            "Parent": "Sen2_001",
            "Child": null,
            "z_cordinate": 5
                  },
    "z_cordinate": 0
             },
    "z_cordonate": -5
}]  

注意:我编辑了样例对象,请再查看一次,我更改了端括号,使其看起来更像一个数组而不是普通对象。 JSON 是次要的,我的数组应该满足我的目的。

目的:

我如何访问对象 X.parent.child 时尚。我有一些知识,但不足以构建这个对象。我还计划以两种方式访问​​对象,Grapndparent - Parent - Child 和 Me - Parent - Grandparent。我怎么能那样做?对象的父子关系应该是有意义的而不是随机的,而且一个父级可以有多个孩子。

【问题讨论】:

  • 什么?您能否重新表述问题或添加一些细节以使其易于理解?
  • 我已经编辑了问题,如果您正在寻找更多详细信息,请查看并告诉我
  • 这不是有效的 Json,要拥有一个数组,您必须使用 [,] 而不是 {} JSON
  • 听起来你只是想创建一个涉及对象的数据结构,而不是实际的 JSON。无论哪种方式,您都需要提供更多信息。你到底有什么问题?请发布您的一些代码。
  • 签出这个包,我想可以帮助你。 npmjs.com/package/customjsonbuilder

标签: javascript json logic


【解决方案1】:

由于所有“值”键都是唯一的,因此您可以将其作为字典键。 所以设计成这样:

{
 "Sens1_001": {
               "value": "Sens1_001",
               "parent": null,
               "child": "Sen2_068",
               "z_coordinate": 5
              },
 "Sens2_068": {
               "value": "Sens2_068",
               "parent": "Sens1_001",
               "child": "Sen3_098",
               "z_coordinate": -5
              }
 .
 .
 .
}

一旦这个字典'dict'准备好了,如果你知道祖父母的值,那么:

grandparent = dict[value];
parent = dict[grandparent[child]];
child = dict[parent[child]];

同样,如果你知道孩子的价值,

child = dict[value];
parent = dict[child[parent]];
grandparent = dict[parent[parent]];

如果你还不明白,请告诉我。

【讨论】:

  • dict 是 JSON 字典对象。
  • 你使用值作为键是解决方案。
  • @GautamJeyaraman,我对您的编辑感到困惑。您能否提供一个关于您正在讨论的内容的 jsfiddle 链接。顺便说一句,谢谢你的回复。也许它不应该是 JSON,但我希望我的对象服务于我的目的。
  • 请再看一遍问题,我已经按要求修改了
  • 是的,我看到了编辑后的问题,答案还是一样。我很快就会给你一个 jsfiddle 示例。
【解决方案2】:

由于 json 本身是一个 javascript 数组,因此您可以像访问数组一样访问 json 对象;

<script>
  var json = [
        {'SMAK' : 1, 'parent': 'i m perent 1', 'child' : 'i m child'}, 
        {'SMAK' : 2, 'parent': 'i m perent 2', 'child' : 'i m child'}, 
        {'SMAK' : 3, 'parent': 'i m perent 3', 'child' : 'i m child'}, 
        {'SMAK' : 4, 'parent': 'i m perent 4', 'child' : 'i m child'}        
      ]
  console.log(json[0]);
  console.log(json[1].parent);
  console.log(json[3]['child']);
</script>

因此,如果您知道索引,则可以访问该对象的任何属性;

【讨论】:

  • 感谢您的回复,但是我的对象关系应该像父母和孩子一样有意义
猜你喜欢
  • 2021-06-09
  • 2016-05-08
  • 1970-01-01
  • 2012-01-11
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多