[英]SyntaxError: Unexpected token { in JSON at position 1
我正在尝试获取具有内部对象且没有密钥的JSON请求。 但是我在位置1收到了意外令牌{
下面给出了示例JSON。
{{“” empid“:” 001“,” academictype“:”学士“,” academicdegree“:” BE“,” academicSpecialization“:”计算机科学“},{” empid“:” 002“,” academictype“:”硕士”,“学术学位”:“ MBA”,“ academicSpecialization”:“人力资源”}}
我试过下面的代码
createEmployeeAcademics(req, res, next) {
let body = '';
var fbResponse = [];
req.on('data', function (chunk) {
console.log(chunk);
body += chunk;
console.log(body);
});
req.on('end', function () {
fbResponse.length = 0;
var arrayValues = JSON.parse(body);
for (var i = 0; i < arrayValues.length; i++) {
fbResponse.push(arrayValues[i]);
}
});
}
我低于错误
语法错误:意外令牌{在JSON.parse()位置1的JSON中
这是无效的Java脚本对象或列表,并且已经解析。 尝试制作列表然后仅循环
喜欢
[ { "empid" : "001", "academictype": "Bachelor", "academicdegree": "BE", "academicSpecialization": "Computer Science" }, { "empid": "002", "academictype": "Masters", "academicdegree": "MBA", "academicSpecialization": "Human Resources" } ]
您收到Unexpected token
错误,因为JSON.parse(body)
无法解析您提供的JSON。 使用在线工具美化JSON可以更好地调试此问题。 为您的字符串:
{
{
"empid": "001",
"academictype": "Bachelor",
"academicdegree": "BE",
"academicSpecialization": "Computer Science"
}, {
"empid": "002",
"academictype": "Masters",
"academicdegree": "MBA",
"academicSpecialization": "Human Resources"
}
}
您的JSON缺少与objects
相关的重要属性。
JSON对象用花括号{}包围。
JSON对象以键/值对形式编写。
您最外面的花括号后没有任何键值对,而是直接从另一个对象开始。 您可以通过以下任一方法来更正JSON:
1.使外部JSON成为数组
[
{
"empid": "001",
...
}, {
"empid": "002",
...
}
]
数组可以直接将对象作为其子对象,并且可以顺序访问。
2.将键添加到外部对象的子对象:
{
"001": {
"academictype": "Bachelor",
"academicdegree": "BE",
"academicSpecialization": "Computer Science"
},
"002": {
"academictype": "Masters",
"academicdegree": "MBA",
"academicSpecialization": "Human Resources"
}
}
这样,您可以使用对象的唯一ID(例如empid
)直接访问对象,尽管遍历对象可能不像数组那么容易。
您的示例JSON无效。 您可以使用json lint来验证json对象。
您显示的示例JSON无效。 如果那是您的服务器提供数据的方式,那么服务器正在提供格式错误的JSON。
您可能必须修复服务器才能以键值对格式发送数据。
有两种方法可以做到这一点。
1)将雇员数组放在包装对象中:
{"employees": [{ "empid" : "001", "academictype": "Bachelor", "academicdegree": "BE", "academicSpecialization": "Computer Science" }, { "empid": "002", "academictype": "Masters", "academicdegree": "MBA", "academicSpecialization": "Human Resources" }]}
2)放置由员工ID映射的员工:
{ "001":{ "empid" : "001", "academictype": "Bachelor", "academicdegree": "BE", "academicSpecialization": "Computer Science" }, "002":{ "empid": "002", "academictype": "Masters", "academicdegree": "MBA", "academicSpecialization": "Human Resources" } }
根据您选择的格式,客户端代码将略有不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.