我正在尝试从 API 中解析返回 JSON 数据的字段,该 API 中有很多奇怪的字符(东亚符号、大引号等)。我收到此错误并且不知道如何修复它。有没有办法将请求响应转换为某种“转义”错误文本的格式。 这是错误:
这是我的确切代码,很抱歉它太长了。
var fs = require('fs'),
http = require('http'),
request = require('request');
var url = 'http://app.sportstream.com/api/tagstream/tagStreamForStageTwoModeration?q={%22customerId%22:%22ABHoko14%22,%22type%22:{%22$in%22:[%22image%22,%22video%22]}}&_=_5555'
var firstTime = false
var m = 1
function get() {
console.log('ghghg')
http.get(url, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
body = JSON.parse(body)
jParse(body)
setTimeout(get, 5000)
});
}).on('error', function(e) {
console.log("Got error: ", e);
setTimeout(get, 5000)
});
}
function jParse(info) {
//data = JSON.parse(info)
data = info
entries = data.entries
if (firstTime) {
numEntries = 800 //entries.length
firstTime = false
} else {
numEntries = 2
//numEntries = entries.length - numEntries
if (numEntries) {
for (i = 0; i < numEntries; i++) {
type = entries[i]['type']
title = entries[i]['author']
if (type == 'video') {
url = entries[i]['ssMetaData']['videos']['standard_resolution']['url']
download(url, 'images/aFile.mp4', function() {
console.log('hello')
})
} else if (type == 'image') {
url = entries[i]['ssMetaData']['images']['standard_resolution']['url']
download(url, 'images/' + m + 'File.jpg', function() {
console.log('hello')
})
} else {
console.log('no data')
}
m++
}
}
}
}
get()
这是我的错误
undefined:1
����
^
SyntaxError: Unexpected token �
at Object.parse (native)
最佳答案
由外来字符;我假设您指的是 UTF-8
编码字符串。
为什么不尝试在响应上设置 Content-Type
编码,如下所示:
http.get(url, function(res) {
res.header("Content-Type", "application/json; charset=utf-8");
关于javascript - JSON解析问题是由外来字符引起的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676097/