2016-05-03 45 views
0

以下是从源文件中的数据:的Javascript仅返回密钥而不是值

{ 
"[email protected]": { 
    "category": "chapter", 
    "children": [ 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]" 
    ], 
    "metadata": { 
     "display_name": "Introduction course orientation" 
    } 
    }, 


    "[email protected]": { 
    "category": "chapter", 
    "children": [ 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]" 
    ], 
    "metadata": { 
     "display_name": "Module closing section" 
    } 
    } 
    } 

以下JavaScript带来的顶部关键值(即dubbuseqchapter +块@ a7a5931f68d0482eaff2b7c9f9684e47,dubbuseqchapter +块@ b2451e9195c5466db8b66f53ed06c9fd)

Javascript代码

var obj = JSON.parse(jContent); 
     var keys = Object.keys(obj); 


    for (var i = 0; i < keys.length; i++) { 
     var row = createRowCopy(getOutputRowMeta().size()); 
     var idx = getInputRowMeta().size(); 


      row[idx++] = keys[i]; 

     // Alert (keys.length); 

      putRow(row); 
     } 

但是,我无法得到密钥的值。(即范畴,儿童和元数据)在这个例子中。

我已经尝试了Objects.values(),但它在Alert中返回null或object对象。

回答

5

keys是一个字符串数组,每个字符串都是属性名称。

你得到按照通常的方式为属性名称值:

object[property_name] 

var value = obj[keys[i]]; 
+0

谢谢你的快速回复。我真的很感激。但所有我在Alert框中的对象对象...多数民众赞成在它... – Dubbu

+0

@Dubbu - 这是因为它(值)是一个对象,你已经隐式调用'toString()'。你期望什么? – Quentin

+0

嗨昆汀,我不太了解Javascript。我拿起了某人编写的代码并设法让事情顺利进行。我想要的只是从上面的json源代码以及正在填充的Keys中,我需要值(类别,子元素和元数据)。这可能吗?谢谢 – Dubbu

0

这段代码演示了如何导航到解析JsonData

var obj = JSON.parse(textJson); 
var keys = Object.keys(obj); 
console.log(obj[keys[0]].metadata.display_name); 

这将打印:简介课程导向

+0

凯文您好,感谢您的宝贵提示。如果我给Alert,但它无法检索Category,Children和Metada(所有3个子元素),但它工作正常。我为总输出使用下面的代码。 \t \t \t var obj = JSON.parse(jContent); \t \t \t var keys = Object.keys(obj); \t \t \t \t \t \t \t 为\t(VAR I = 0;我 Dubbu

0

甚至这种方式来获取你的子属性

var obj = JSON.parse(textJson); 
var keys = Object.keys(obj); 
for (var i = 0; i < keys.length; i++){ 
    console.log(keys[i]); 
    var subKeys = Object.keys(obj[keys[i]]); 
    for (var j = 0; j < subKeys.length; j++) console.log(subKeys[j] + " --> " + obj[keys[i]][subKeys[j]]); 
} 
相关问题