2016-05-03 87 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]]); 
} 
相關問題