我有PHP输出JSON多维数组,如下所示:
{"rates":[{"meter":"30","rate":"0.15060","ppd":"10.000"}]}
但是,在尝试在JavaSCript方面对其进行解码时,我一直收到错误。
Uncaught TypeError: Cannot read property 'length' of null
以下是jQuery方面的代码:
success: function (result) {
console.log(result);
$.each($.parseJSON(result), function (item, value) {
if (item == "rates") {
$.each($.parseJSON(value), function (i, object) {
console.log(i + "=" + object);
});
}
第一个控制台日志给出了我在顶部提到的输出,但由于某种原因,我无法像我想的那样访问数组。
非常感谢任何帮助:)
答案 0 :(得分:12)
您无需再次在值上调用parseJSON。它已经是一个对象
var result='{"rates":[{"meter":"30","rate":"0.15060","ppd":"10.000"}]}';
console.log(result);
$.each($.parseJSON(result), function (item, value) {
if (item == "rates") {
$.each(value, function (i, object) {
$.each(object, function (subI, subObject) {
console.log(subI + "=" + subObject);
});
});
}
});
此外,如果你想知道错误发生了,因为你试图在一个对象上调用parseJSON而parseJSON需要一个字符串,所以它返回null到每个函数,然后尝试基于null执行for循环。长度
答案 1 :(得分:5)
由于您只需要一个属性的内容,因此不需要遍历所有属性,因此您不需要嵌套循环。只需获取数组并循环遍历它:
$.each($.parseJSON(result).rates, function (i, object) {
console.log(i + "=" + object);
});
如果您正在使用专门用于获取JSON的方法,或者如果在响应上正确设置了内容类型,则您甚至不应该解析结果,它已在调用回调方法之前解析:
$.each(result.rates, function (i, object) {
console.log(i + "=" + object);
});
答案 2 :(得分:1)
该程序显示如何读取json并将数据存储到文本框
$(document).ready(function(){
$.getJSON("Test.json",function(data){
$.each(data,function(key,value){
alert(data[key].attrib1name);
alert(data[key].attrib2name);
$('input').val(data[key].enterpriseName);
activities=data[key].activities;
console.log(value);
});
});
});