首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌自定义搜索API返回无效的JSON?

谷歌自定义搜索API返回无效的JSON?
EN

Stack Overflow用户
提问于 2011-10-20 17:46:48
回答 1查看 1.5K关注 0票数 0

我打电话给Google自定义搜索w/ Node.js来尝试。我可以很好地得到结果,但是当我尝试使用JSON.parse(dataFromGoogle)解析JSON时,我会得到一些元素(html标题和片段;html标题中包含unicode转义序列,但我不知道哪里出错了)的非法标记错误。我可以让谷歌不给我发回html标题,但我真的需要片段!

是否有一个好的解决办法,或者我应该只是计划做一些额外的预处理,以剔除非法字符手动?

**编辑:添加了控制台输出

使用谷歌搜索“小企业”

{“customsearch#search”:"customsearch#search","url":{ "type":"application/json","https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&hr={language?}&safe={safe?}&cx={cx?}&cref={cref?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&alt=json“},”查询“:{ "nextPage":{”标题“:"Google自定义搜索-小企业”,"totalResults":"42300","searchTerms":“小企业”,“计数”:10,"startIndex":11,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"my_token“},"request":{ "title":"Google定制搜索-小企业”,"totalResults":"42300","searchTerms":“小企业”,“计数”:10,"startIndex":1,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"my_token“},“上下文”:{“标题”:"IR未定义:60 "htmlTitle":"\u003cb\u003eSmall Business\u003c/b\u003e医疗保健税Cre htmlTitle SyntaxError: Object.parse (原生) at IncomingMessage的意外令牌非法。(/Users/pvencill/workspace/irslab/lib/searchEngine.js:44:35) at IncomingMessage.emit (events.js:64:17) at HTTPParser.onBody (http.js:119:42) at CleartextStream.ondata (http.js:1213:22) at CleartextStream._push (tls.js:291:27) at SecurePair._cycle (tls.js:565:20) at EncryptedStream.write (tls.js:97:13)Socket.ondata (stream.js:40:26) at Socket.emit (events.js:64:17)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-26 19:06:55

原来我完全误解了错误告诉我的意思。它发生在含有unicode的字段上,这是巧合。真正的问题是我在.on中调用了.on(“数据”,.)处理程序,它处理分组响应的一部分;在块完成之前可能不是有效的JS语句终止符。正确的处理方法是构建主体,然后使用on("end")来解析它。

代码语言:javascript
复制
        var message = "";
        https.get(options, function(res){
            res.setEncoding('utf8');
            res.on('data', function(data){
                message += data;
            });

            res.on('end', function(){
                if(callback){
                    var data = JSON.parse(message);
                    data.items = data.items || [];
                    callback(data);
                }
            });

            res.on('error', function(error){
                console.log("ERROR" + error.message);
            });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7840003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档