我是JSON的新手,我使用json_encode创建一个看起来像这样的JSON对象
[{
"timestamp": "12\/16\/2013 0:00",
"curr_property": "7211",
"curr_property_cost": "123",
"day_property": "48",
"day_property_cost": "281",
"curr_solar_generating": "4958",
"curr_solar_export": "0",
"day_solar_generated": "33",
"day_solar_export": "0",
"curr_chan1": "1964",
"curr_chan2": "4958",
"curr_chan3": "289",
"day_chan1": "13",
"day_chan2": "33",
"day_chan3": "1"
}, {
"timestamp": "12\/16\/2013 0:00",
"curr_property": "7179",
"curr_property_cost": "123",
"day_property": "72",
"day_property_cost": "281",
"curr_solar_generating": "4926",
"curr_solar_export": "0",
"day_solar_generated": "49",
"day_solar_export": "0",
"curr_chan1": "1980",
"curr_chan2": "4926",
"curr_chan3": "273",
"day_chan1": "19",
"day_chan2": "49",
"day_chan3": "2"
}, {
"timestamp": "12\/16\/2013 0:00",
"curr_property": "9627",
"curr_property_cost": "165",
"day_property": "104",
"day_property_cost": "282",
"curr_solar_generating": "4749",
"curr_solar_export": "0",
"day_solar_generated": "65",
"day_solar_export": "0",
"curr_chan1": "1980",
"curr_chan2": "4749",
"curr_chan3": "2898",
"day_chan1": "26",
"day_chan2": "65",
"day_chan3": "12"
}, {
"timestamp": "12\/16\/2013 0:00",
"curr_property": "9610",
"curr_property_cost": "165",
"day_property": "136",
"day_property_cost": "282",
"curr_solar_generating": "4781",
"curr_solar_export": "0",
"day_solar_generated": "81",
"day_solar_export": "0",
"curr_chan1": "1980",
"curr_chan2": "4781",
"curr_chan3": "2849",
"day_chan1": "32",
"day_chan2": "81",
"day_chan3": "21"
}, {
"timestamp": "12\/16\/2013 0:01",
"curr_property": "9691",
"curr_property_cost": "166",
"day_property": "168",
"day_property_cost": "283",
"curr_solar_generating": "4797",
"curr_solar_export": "0",
"day_solar_generated": "97",
"day_solar_export": "0",
"curr_chan1": "1996",
"curr_chan2": "4797",
"curr_chan3": "2898",
"day_chan1": "39",
"day_chan2": "97",
"day_chan3": "31"
}, {
"timestamp": "12\/16\/2013 0:01",
"curr_property": "7034",
"curr_property_cost": "120",
"day_property": "191",
"day_property_cost": "283",
"curr_solar_generating": "4781",
"curr_solar_export": "0",
"day_solar_generated": "113",
"day_solar_export": "0",
"curr_chan1": "1980",
"curr_chan2": "4781",
"curr_chan3": "273",
"day_chan1": "46",
"day_chan2": "113",
"day_chan3": "32"
}]
我尝试使用下面的脚本解析数据
$(document).ready(
function() {
var jsonData = JSON.parse("<?php echo $jsondata; ?>");
console.log(jsonData.timestamp[0]);
});
我不知道我在这里做错了什么。我知道javascript中默认长度为0,所以如何获取值? $ jsondata上的BTW var_dump给出了数据
答案 0 :(得分:6)
您的JSON数据包含"
个字符。您正尝试将其注入由"
分隔的JavaScript字符串文字,但您不能转义数据中的"
个字符。
您的JSON还包含新行,JavaScript字符串中不允许使用新的行,因此您需要使用转义序列(\n
)替换它们。
也就是说,JSON是JavaScript文字语法的一个子集,因此您不需要将JSON文本转换为JavaScript字符串文字,然后解析它,您可以简单地使用JSON作为JavaScript的:
var data = <?php echo $jsondata; ?>;
你还有另外一个问题。您的JSON数据表示对象数组,而不是具有数组作为属性值的对象。您需要在属性名称之前访问数组:data[0].timestamp
。
答案 1 :(得分:2)
请尝试使用单引号:
var jsonData = JSON.parse("<?php echo $jsondata; ?>");
将其替换为:
var jsonData = JSON.parse('<?php echo $jsondata; ?>');
由于$jsondata
包含双引号("
),因此传递给JSON.parse()
的字符串将被破坏,导致JavaScript无效。
然而,正如昆汀回答的那样,整个JSON.parse
是不必要的
Like he answered,请使用:var data = <?php echo $jsondata; ?>;
此外,您正在错误地访问该对象:
jsonData.timestamp[0];
应该是:
jsonData[0].timestamp;
您的JSON是一个时间戳对象数组,因此首先使用数组索引[0]
。
答案 2 :(得分:1)
您正在调用console.log(jsonData.timestamp[0]);
,这基本上意味着,在jsonData
内找到属性时间戳,这是一个数组并获得第一个索引。
但是jsonData是数组,而不是时间戳。您可能应该使用类似console.log(jsonData[0].timestamp);