2016-04-03 66 views
0

我有JSON结果我有代码,但它适用于只有唯一键 在我的数据有每个值不同的密钥
请帮我如何解析JSON结果在Javascript

{ 
    "images": [ 
    { 
     "time": 2.86091, 
     "transaction": 
     { 
      "status": "Complete", 
      "subject": "test2", 
      "confidence": 0.77, 
      "gallery_name": "gallerytest1", 
     }, 
     "candidates": [ 
     { 
      "subtest1": "0.802138030529022", 
      "enrollment_timestamp": "1416850761" 
     }, 
     { 
      "elizabeth": "0.802138030529022", 
      "enrollment_timestamp": "1417207485" 
     }, 
     { 
      "elizabeth": "0.777253568172455", 
      "enrollment_timestamp": "1416518415" 
     }, 
     { 
      "elizabeth": "0.777253568172455", 
      "enrollment_timestamp": "1416431816" 
     } 
     ] 
    } ] 
} 

我想解析所有catidates及其价值从它 伊丽莎白= 0.77777 subtest1 = 0.802138030529022

+0

它是一种简单的方法来处理JavaScript中的'json',因为不需要任何第三方库来访问'data'。来自任何复杂的'json'。只需简单地遍历数组。谢谢@ user1199396 –

+0

这不是JSON,你不是“解析它”。它是一个** JavaScript对象**,您正在**访问**它。无论如何,当你说*我想解析所有catidates和它的值从它伊丽莎白= 0.77777 subtest1 = 0.802138030529022 *,我无法理解。 0.777777从哪里来?我怎么知道你想要检索哪个伊丽莎白值? 'subtest1'是什么意思? – 2016-04-03 11:54:09

回答

0

JSON已经是 '解析' 的JavaScript作为JSON意味着JavaScript对象符号。 如果您的问题是,你不知道如何通过你的JSON对象的候选环路,这里是你如何做到这一点:

var candidates = jsonObject.images[0].candidates 
for (var key in candidates) { 
     alert(jsonObject[key]); 
} 
+0

每个候选对象的我的密钥是不同的,所以它如何迭代使用循环 – user1199396

+0

这就是为什么你必须使用循环,而不是自己指定密钥。只要使用我的答案中指定的每个循环。您不需要密钥名称(因为变量'key'包含此密码) – Laurens

0

你在你的JSON字符串有错误,请检查该行:"gallery_name": "gallerytest1", 字符,是问题。用于解析

代码例如:

var data = JSON.parse(jsonString); 
alert(data["images"][0]["candidates"][0]["subtest1"]); 

UPDATE:

下面是一个例子如何与DINAMIC性质工作。

var jsonData = JSON.parse(jsonString); 

     for(i=0; i < jsonData["images"].length; i++) { // foreach image 
      var candidates = jsonData["images"][i]["candidates"]; // array of candidates 

      for (j = 0; j < candidates.length; j++) { // foreach candidate 
       var candidate = candidates[j]; // single candidate 

       for (var key in candidate){ // foreach candidate property 

        // this if condition is required when working with for loop on this way. 
        // for more visit http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript 
        if (typeof candidate[key] === 'function') { 
         continue; 
        } 
        alert("Key: " + key + "\nValue: " + candidate[key]); 
       } 
      } 
     } 
+0

我的密钥中的每个候选对象都是不同的,所以它如何迭代 – user1199396

0

只是单纯的指你jsonObject到变量var jsonData,然后用简单的循环通过复杂的jsonObject按你的json结构重述,

var jsonData = {.....} // Your JSON Object that you added in your Question. 

这里jsonData包含您的复杂jsonObject现在通过迭代json元素。

for(i=0; i < jsonData.images.length; i++){ //iterate throughout the Images Node Array. 

    var candidates = obj.images[i].candidates; //Get the Candidate Node of each Image. 

    for(j=0; j < candidates.length; j++){ //iterate throughout the Candidates Node Array. 

     console.log(candidates[j]); // get the each Candidate to print on Console log of Web Browser. 
    } 
+0

我的密钥中的每个候选对象都是不同的,因此它如何迭代 – user1199396