我正在尝试读取json字符串并在html页面上输出某些字段,我收到此错误“SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符” 这是我发送的json。
{
"Order0" : {
"user" : "Name",
"products" : [ {
"discription" : "freddo",
"productName" : "sketo",
"price" : 22.3,
"id" : 1
}, {
"discription" : "frape",
"productName" : "glyko",
"price" : 22.3,
"id" : 1
}, {
"discription" : "cappouchino",
"productName" : "sketo",
"price" : 22.3,
"id" : 1
} ],
"id" : 0,
"date" : null,
"temp" : "Get"
},
"Order1" : {
"user" : "Name",
"products" : [ {
"discription" : "freddo",
"productName" : "sketo",
"price" : 22.3,
"id" : 1
}, {
"discription" : "frape",
"productName" : "glyko",
"price" : 22.3,
"id" : 1
}, {
"discription" : "cappouchino",
"productName" : "sketo",
"price" : 22.3,
"id" : 1
} ],
"id" : 0,
"date" : null,
"temp" : "Get"
}
}
提前谢谢你。 [编辑]
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
var nIntervId;
function fun() {
nIntervId = setInterval(proxy, 2 * 1000);
}
function proxy() {
$.getJSON('events', function(data) {
var obj = JSON.parse(data);
console.log(obj.toString());
});
}
function stop() {
clearInterval(nIntervId);
}
</script>
</head>
<body onload="fun();">
<div id="data"></div>
</body>
</html>
这是处理Json的代码
[EDIT2]
与window.alert(JSON.stringify(data));
我得到了我想要的字符串,但我如何获得某些字段?
答案 0 :(得分:3)
where($data[$field])
会自动解析字符串,因此$.getJSON
已经是一个对象,再次调用data
会导致错误。
来自jQuery docs:
成功回调传递返回的数据,通常是a 由JSON结构定义并解析的JavaScript对象或数组 使用$ .parseJSON()方法。它也传递了文本状态 回应。
来源:http://api.jquery.com/jquery.getjson/
要访问对象中的数据,可以使用点表示法。查看上面使用的示例是一个示例:
parse
您也可以使用括号访问它:
var user = data.Order0.user;
// user variable now holds the string "Name"
要获得产品,您可以使用相同的语法,但由于产品是一个数组,您需要通过索引或循环遍历值来访问它。
指数:
var user = data["Order0"]["user"];
循环:
var order0products = data.Order0.products;
var product1 = order0products[0];
var price = product1.price;
// The price variable now holds the value 22.3