解析JSON通过javascript得到错误:JSON.解析:意想不到的人物
Parsing JSON via javascript getting error: json.parse:unexpected character
我试图解析我通过ajax接收的API数据。我无法控制api json结构。当我尝试使用此代码解析它时,我得到这个错误:
json.parse:unexpected character
,div上没有数据输出。我花了两天时间也没能修好它。你们能告诉我怎么修吗。由于
研究司内容:
"['r'n {'r'n '"itemID'": '"1'",'r'n '"itemTitle'": '"First'",'r'n '"itemText'": '"first one'",'r'n '"ThumbUrl'": '"http://somesite.com/1.jpg'",'r'n '"itemContent'": null'r'n },'r'n {'r'n '"itemID'": '"2'",'r'n '"itemTitle'": '"Second'",'r'n '"itemText'": '" second one'",'r'n '"ThumbUrl'": '"http://somesite/2.jpg'",'r'n '"itemContent'": null'r'n }'r'n]"
javascript: <html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
function ajax() {
$.get("./data.html", function(data){
data = data.replace("'"[", "[");
data = data.replace("]'"", "]");
$("#area1").text(data);
// parse JSON response
var json = $.parseJSON(data);
console.log(json);
// then loop the single items
for(i in json)
{
// create HTML code
var div = "<div class='"image'">'n" +
"<a href='"javascript:dofunction('./test.php?title=" + json[i].itemTitle + "&TargetUrl=http://somesite.com/" + json[i].itemID + "')'">'n" +
"<img src='""+ json[i].ThumbUrl +"'" alt='"..'" />'n" +
"</a>'n" +
"</div>'n";
$("#myDiv").append(div);
}
});
}
</script>
<body>
<button onclick="ajax()">test</button>
<br>orginal data:<br>
<textarea id="area1" rows="4" cols="50" ></textarea>
<div id='myDiv'></div>
</html>
console.log (json):
JSON.parse: unexpected character
https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
Line 4
使用格式良好的JSON输入时。jsFiddle
示例[{
"itemID": "1",
"itemTitle": "First",
"itemText": "first one",
"ThumbUrl": "http:'/'/somesite.com'/1.jpg",
"itemContent": null
},{
"itemID": "2",
"itemTitle": "Second",
"itemText": "second one",
"ThumbUrl": "http:'/'/somesite'/2.jpg",
"itemContent": null
}]
引号可以保留,但是额外的'r'n需要删除。
data = data.replace("''r''n", "");
最后我用下面的方法去掉了引号,'r'n和其他一些不必要的东西,解决了这个问题:
data = data.replace("'"[", "[");
data = data.replace("]'"", "]");
data = data.replace(/''r''n/g, "");
data = data.replace(/''/g, "");
data = data.replace("n'"", "");
data = data.replace("'")", "");
data = data.replace("'",", "");
当AJAX调用的结果被解析两次时,我真的不知道背后的原因,但对我来说,它看起来像它删除了所有不必要的空格,并在第一次解析函数调用时正确形成JSON字符串,然后当解析函数再次调用时,它将其转换为JavaScript对象。
js代码
$(document).ready(function() {
$.get("./data.html", function(data, status) {
$("#area1").text(data);
// parse JSON response
var json = JSON.parse(JSON.parse(data));
console.log(json);
// then loop the single items
for (i in json) {
// create HTML code
var div = "<div class='"image'">'n" +
"<a href='"javascript:dofunction('./test.php?title=" + json[i].itemTitle + "&TargetUrl=http://somesite.com/" + json[i].itemID + "')'">'n" +
"<img src='"" + json[i].ThumbUrl + "'" alt='"..'" />'n" +
"</a>'n" +
"</div>'n";
$("#myDiv").append(div);
}
});
});
这是活塞链接
主要是parse()
的问题,它期望JSON(received as JSON)
,
请与JSON.stringify(data)
核对。您还需要删除'n , 'r...
data = data.replace(/(?:''[rn]|['r'n]+)+/g, "")
您的JSON看起来很好,问题是由替换方法引起的。您可以简单地像这样解析数据:
var jsonResponse = JSON.parse(data);
jsonResponse是一个json数组,你可以对它做任何你想做的事情。
相关文章:
- 使用JQuery解析JSON嵌套数组
- 解析JSON并从中删除对象会出错
- 通过解析Json附加到数组
- 如何使用jQuery来解析json并将其作为列表输出到HTML中
- 这需要如何解析JSON呢
- 使用Angular.js解析JSON中的嵌套对象数组
- 正在创建使用子字符串解析JSON数据的函数
- 为什么我不能使用jQuery.parseJSON(json)解析json字符串
- 从第三方服务器发出解析json的问题
- 使用angularjs解析JSON,并选择select选项
- 如何通过解析JSON文件来分配JavaScript变量
- 解析Json内部的函数
- 在Javascript中解析json并在html上创建表
- 使用.map解析JSON对象时出现问题
- 在Jade中解析JSON
- JS-通用解析JSON响应
- 通过组合变量在解析JSON时访问随机对象
- 如何使用javascript解析JSON文件
- 直接从node.js中的文件解析JSON
- 使用标签解析JSON