2017-01-12 115 views
0

我想创建一个JSON对象(在JavaScript中)与multible childeren。但父母也必须有一个值,所以代码可以执行为:Json父级值与嵌套的孩子

var parent = { 
     "child": { 
     "ownValue": "valueChild", 
     "grandchild": "ValueGrandChild", 
     } 
    }; 
parent.child.grandchild // return "valueGrandChild" 
parent.child // return "valueChild" 

这是可能的JavaScript?

+0

是的,这是可能的 – Vineet

+0

oke,你可以说怎么样? –

+0

在我看来,我们正在努力靠自己的努力,事情也可以更容易工作。我不确定你的代码结构是什么,你是循环还是手动创建。但只记住一件事,你必须按照这样的顺序分配值,以便你可以随意取回。您可以使用循环或静态分配。试试这个'parent ['child'] ='valuechild'; parent ['child'] ['grandchild'] ='grandvaluechild';'您也可以在对象中使用'['']'符号 – Vineet

回答

0

如果我明白你的问题(我不知道),我会用不同的策略来解决问题。

如你所知,JSON对象不具有的属性,但只是孩子们的属性。您可以使用名为child的属性来存储父对象的子对象(子树)。

var parent = { 
    "value": "Parent own value", 
    "child": { 
    "grandchild": {"value": "ValueGrandChild", "child": {}} 
    "anotherchild": {"value": "anotherChildValue", "child": {}} 
    } 
}; 

儿童和属性是更好的分离,就可以解决这些问题(和“正确”的对象属性)如下:

parent.child.grandchild.value // returns "valueGrandChild" 
parent.value // returns "Parent own value" 

你可以有也有一些其他商品

var how_many_child = Object.keys(parent.child).length 
var a_child = parent.child.anotherchild 
var how_many_nephew = Object.keys(a_child.child).length 
a_chid.value; // returns "anotherChildValue" 
parent.child.anotherchild.value; // returns "anotherChildValue" 
0

不知道我理解的问题,但你在至少对象的格式有误。如果您更改“;”,它会以您想要的方式工作。到“,”。 (看下面)

改变它;

var parent = { 
    "child": { 
    "ownValue": "valueChild"; 
    "grandchild": "ValueGrandChild"; 
    } 
}; 

to;

var parent = { 
    "child": { 
    "ownValue": "valueChild", 
    "grandchild": "ValueGrandChild", 
    } 
}; 

这是您可以通过使用获得valueChild;

parent.child.ownValue 
+0

修正了错字。 –

0

即使您确实得到一个对象返回另一个值,您将不再能够正常使用该对象。对对象的每个引用只会引用该值(使嵌套的对象引用无效)。你显然可以保持“ownValue”属性用于你想绑定到对象的每个值。

+0

这可能与另一种对象?像嵌套函数或类似的东西? –

+0

@ stage-newfish不,JavaScript中的所有内容都是对象或原始类型。没有任何特殊类型可以支持你想要的东西(如果我理解正确的话)。所有基元类型(如字符串)都是不可变的,因此不能添加或更改。原始类型在分配时实际上被复制。 –