2014-10-17 65 views
-2

您好我有PHP代码那样的例子:转换解析的JSON来JavaScript数组

$array1 = array("fruits" => "banana","vegetables" => "tomatos"); 
$array2 = array("name" => "Jack","Age" => "32"); 

$array3 = array($array1, $array2); 

echo json_encode($array3); 

JavaScript代码包括jquery的:

var json_data = $.ajax({ 
       type: 'POST', 
       url: 'scripts/myfile.php', 
       data: { action: 'myaction' }, 
       dataType: 'json', 
       cache: false, 
       success: function(result) { 

       } 
      }); 
      console.log(json_data); 

这是浏览器的控制台的json_data内容:

"{"HUM":[{"label":"2014-10-16 17:08:55","y":"58"},{"label":"2014-10-15 08:16:55","y":"56"},{"label":"2014-10-15 08:16:50","y":"56"},{"label":"2014-10-15 08:16:45","y":"56"},{"label":"2014-10-15 08:16:40","y":"56"},{"label":"2014-10-15 08:16:35","y":"56"},{"label":"2014-10-15 08:16:30","y":"56"},{"label":"2014-10-15 08:16:25","y":"56"},{"label":"2014-10-15 08:16:20","y":"56"},{"label":"2014-10-15 08:16:15","y":"56"}, 

"TEMP":[{"label":"2014-10-16 17:08:55","y":"26"},{"label":"2014-10-15 08:16:55","y":"24"},{"label":"2014-10-15 08:16:50","y":"24"},{"label":"2014-10-15 08:16:45","y":"24"},{"label":"2014-10-15 08:16:40","y":"24"},{"label":"2014-10-15 08:16:35","y":"24"},{"label":"2014-10-15 08:16:30","y":"24"},{"label":"2014-10-15 08:16:25","y":"24"},{"label":"2014-10-15 08:16:20","y":"24"},{"label":"2014-10-15 08:16:15","y":"24"}, 

"HUM2":[{"label":"2014-10-16 17:08:55","y":"38"},{"label":"2014-10-15 08:16:55","y":"36"},{"label":"2014-10-15 08:16:50","y":"36"},{"label":"2014-10-15 08:16:45","y":"36"},{"label":"2014-10-15 08:16:40","y":"36"},{"label":"2014-10-15 08:16:35","y":"36"},{"label":"2014-10-15 08:16:30","y":"36"},{"label":"2014-10-15 08:16:25","y":"36"},{"label":"2014-10-15 08:16:20","y":"36"},{"label":"2014-10-15 08:16:15","y":"36"},{"label":"2014-10-15 08:16:10","y":"36"}, 

"TEMP2":[{"label":"2014-10-16 17:08:55","y":"23"},{"label":"2014-10-15 08:16:55","y":"24"},{"label":"2014-10-15 08:16:50","y":"24"},{"label":"2014-10-15 08:16:45","y":"24"},{"label":"2014-10-15 08:16:40","y":"24"},{"label":"2014-10-15 08:16:35","y":"24"},{"label":"2014-10-15 08:16:30","y":"24"},{"label":"2014-10-15 08:16:25","y":"24"},{"label":"2014-10-15 08:16:20","y":"24"},{"label":"2014-10-15 08:16:15","y":"24"},{"label":"2014-10-15 08:16:10","y":"24"},{"label":"2014-10-15 08:16:05","y":"24"},{"label":"2014-10-15 08:16:00","y":"24"}]}" 

现在我想将其转换为数组,然后将它分离到数组HUM - TEMP - HUM2 - TEMP2

+0

VAR OBJ = JSON.parse(json_data); – Jose 2014-10-17 15:13:49

+1

您的阵列未被终止。 'JSON.parse()'会抛出语法错误。 – Joe 2014-10-17 15:22:45

回答

0

您需要使用parseJson方法从该json创建对象。

result = $.parseJson(result); 

现在你将有一个物体里面所有的数组:

console.log(result['HUM']); 
console.log(result['TEMP']); 
// etc 
+0

是不是只是JSON.parse(字符串)?这是jQuery的实现,它不是像这样的js原生的。否则,它会工作,但。 – somethinghere 2014-10-17 15:15:32

+0

var json_data = $ .ajax({....});该变量默认情况下jquery中的parsejson(结果)我的问题是如何将该对象转换为数组 – Souf 2014-10-17 15:17:22

+0

在控制台对象{HUM:Array [50],TEMP:Array [50],HUM2:Array [50],TEMP2 :Array [50]} – Souf 2014-10-17 15:20:12

0

你需要这个方法

JSON.parse(json_data); 
+0

已经试过了,它给出错误 – Souf 2014-10-17 15:21:15

1

你可以用它获取传递给你的AJAX调用的的result变量success功能:

success: function(result) { 
    // result here is your JSON data which has already been parsed 
} 

您可以使用点或括号记号访问单独的阵列:

var HUM = result.HUM; 
// or 
var HUM = result["HUM"]; 
+1

他们已经指定'dataType:'json'',这意味着jQuery无论如何都会将服务器响应解析为JSON。再次调用'JSON.parse'会很糟糕。 – 2014-10-17 15:16:57

+0

@AnthonyGrist啊,我放置了错误的变量。感谢那! – 2014-10-17 15:18:13

+1

我想你已经误解了我想说的话。没有任何理由根据任何变量调用'JSON.parse()'('json_data'甚至不是JSON数据,它是一个jQuery Deferred)。响应将已经是一个对象,他们只需要使用'result'作为对象,并访问'result.HUM'等。 – 2014-10-17 15:21:05