在javascript中解析JSON对象并查找深度

在javascript中解析JSON对象并查找深度,javascript,json,node.js,parsing,web,Javascript,Json,Node.js,Parsing,Web,我试图找到一个节点的深度,但我无法理解下面的代码。“节点”是作为输入传递的节点对象 for (key in node) { if (node.hasOwnProperty(key)) { child = node[key]; if (typeof child === 'object' && child !== null && key != 'parent')

我试图找到一个节点的深度,但我无法理解下面的代码。“节点”是作为输入传递的节点对象

 for (key in node) 
    {
        if (node.hasOwnProperty(key)) 
        {
            child = node[key];
            if (typeof child === 'object' && child !== null && key != 'parent') 
            {
这就是我迄今为止所理解的:

  • 每个被传递的节点—我们将遍历其属性
  • 对于每个属性,该属性的值都成为一个子属性
  • 如果子对象的类型是对象,并且子对象不等于null,并且属性不等于传递的父“节点”。(这部分我不明白)

我的解释正确吗?非常感谢您的帮助。谢谢

'parent'
似乎是一个普通字符串,它不是javascript中的保留字或JSON标准的内置属性,从我可以看出,您没有被传递到父节点。如果它是对父节点的引用(在
节点['parent']
中),我不确定它将提供什么功能(如果这个解析器正在遍历树)


你有更多的代码可以共享吗?一个正在解析的JSON示例会很有用。我会在评论中发表这篇文章,但我没有足够的声誉,对不起。

以这个JSON为例:

node = {'one': {'two': 3}, 'two':null, 'parent':4};
现在您的代码是:

for (key in node) 
{
    if (node.hasOwnProperty(key)) 
    {
        child = node[key];
        if (typeof child === 'object' && child !== null && key != 'parent') 
        {
在if中,只有
child={'two':3}
节点
对象中的其余项不符合
if
语句


基本上,您通过
节点
项进行迭代,以查找不包含
null
值且其对应键不同于
parent

parent在此处指的是什么?您可以解释一下吗?您已经将其中一个属性包括在内,因为“parent”
parent
只是您考试中的一个键ple.不是javascript中的东西,它是一个字符串,就像键
one
two
。代码检查每个没有键的对象是否等于
parent
。有意义吗?好吧。那么“parent”是对象的属性或节点的键。但是忽略值为“parent”的键的目的是什么?哈哈。好问题。我不知道。你需要在获取代码的地方进行更多检查。当然,它与javascript保留字或对象属性无关,所以你需要停止担心,因为它不是你在JS书中遗漏的东西,它只是与传递给该函数的JSON相关的东西,它是一些兴定制,项目特定的可能。