我遇到了一个简单而又大的问题。
我得到的回复JSON是这样的:
{
"responseCode":200,
"response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"testuser9@hotmail.com\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}",
"headers":{
}
}
正如您所看到的,我得到的JSON无疑是JSON。
但是,内部myJson.response
不是JSON。
我试过了:
var inner = myJson.response;
console.log("inner Json =", inner); //====1
console.log("inner Json =", JSON.stringify(inner)); //====2
inner = JSON.parse(inner);
console.log("inner Json =", inner); //====3
console.log("inner Json =", JSON.stringify(inner)); //====4
它们都不可用,也不是JSON。
环境是:
服务器:NodeJS
框架:Angularjs
前端:离子
我使用$ cordovaTransferFile传输了一个文件 因为它不是$ http所以使用$ httpParamSerializer或$ httpProvider没有意义。
如何将myJson.response
内的数据更改为可用的JSON?
编辑:对不起,JSON不是真正的数据。我在问你之前编辑了它,所以语法错误是由我产生的。 我已经变成了更像真实数据的东西,并且已经检查了语法。 我们使用nodeJS生成JSON,所以肯定JSON中不应该有任何语法错误。
答案 0 :(得分:2)
这里有语法错误:"{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]]
data是一个包含单个对象的数组:{\"subname\":\"subname2\",\"subDate\":\"01011990\"}
然后,数据位于您未关闭的另一个对象中:
{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]
你有两个] 。
EDIT 更正了它:
var json = {
"responseCode":200,
"response":"{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]}]}",
"headers":{
}
};
var response = JSON.parse(json.response);
console.log(response);
EDIT2
使用新的JSON:
var json = {
"responseCode":200,
"response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"testuser9@hotmail.com\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}",
"headers":{
}
}
json.response = JSON.parse(json.response);
console.log(json);
使用上面的代码,您现在可以将json.response用作JSON对象。
答案 1 :(得分:1)
JSON.parse无效,因为myJson.response对象中存在语法错误。
检查以下
{
"success": true,
"results": [
{
"_id": "123123123",
"email": "abcdgmail.com",
"name": "Sixty",
"data": [
{
"subname": "subname2",
"subDate": "01011990"
}
]
}// this is missing in your object
]
}