javascript - JSON解析问题是由外来字符引起的吗?

标签 javascript json node.js

我正在尝试从 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/

相关文章:

javascript - 多个填充 - Mongoose js

javascript - JQuery colorbox iframe,隐藏底栏

javascript - 突出显示跨越 2 个单元格的标题下方的单元格

java - 在任何情况下,父级都不会延迟加载子级

php - 如何将 JSON 文本转换为 PHP 关联数组

php - 强制 json_encode 将(稀疏)数组编码为 php 中的索引数组

javascript - 尝试映射数组时出现错误。类型错误 : Cannot read property 'map' of undefined

javascript - 如何从 Webpack 的导出中排除 vendor 模块 peerDependencies?

json - 使用 pdf-table-extractor 包循环文件

node.js - Electron 静音打印