Javascript 如何让JSON成功解析XMLHttpRequest字符串?

Javascript 如何让JSON成功解析XMLHttpRequest字符串?,javascript,json,xml-parsing,xmlhttprequest,Javascript,Json,Xml Parsing,Xmlhttprequest,我正在使用Goo.gl URL缩短器来缩短链接。我使用了一个Json字符串,它返回的结果如下,存储在xmlHttp.response中: "{ "kind": "urlshortener#url", "id": "http://goo.gl/mR2d", "longUrl": "http://google.com/" }" 发送代码后,我尝试使用JSON解析代码: xmlHttp.send(jsonStr); var short_url = JSON.parse(xmlHttp.re

我正在使用Goo.gl URL缩短器来缩短链接。我使用了一个Json字符串,它返回的结果如下,存储在xmlHttp.response中:

"{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/mR2d",
 "longUrl": "http://google.com/"
}"
发送代码后,我尝试使用JSON解析代码:

 xmlHttp.send(jsonStr);
 var short_url = JSON.parse(xmlHttp.response).id ; 
当此代码在函数中运行时,我得到以下“意外输入结束”错误:

我原以为字符串中的引号可能有问题。解决问题的好方法是什么

我的猜测是,您使用的JSON解析器可能希望转义正斜杠。查看是否接受此输入:

{
    "kind": "urlshortener#url",
    "id": "http:\/\/goo.gl\/mR2d",
    "longUrl": "http:\/\/google.com\/"
}

我想我意识到出了什么问题。代码试图在XMLHttpRequest实际拥有任何信息之前从中获取信息。需要等到xmlHttp.onreadystatechange和xmlHttp.readyState==4,然后取出缩短的URL。然后可以把它送到需要的地方


(不习惯这种异步问题…

您的意思是:var short_url=JSON.parse(xmlHttp.response.id);eval()有效吗?JSON周围没有真正的引号,是吗?请给出一个实际的回复,我不敢相信这是无效的JSONY你不能用纯JavaScript做这件事,因为调用google的服务需要一个post,而且他们不支持JSONP。你能在解析JSON之前删掉开头和结尾的引号吗?是的,在大多数浏览器中,console.log就是这样做的——它们在周围显示引号以表示它是一个字符串,但不转义内容——它们只是按原样打印,包括换行符等。这意味着您的JSON实际上是有效的,您可以向我们显示整个错误消息吗?
{
    "kind": "urlshortener#url",
    "id": "http:\/\/goo.gl\/mR2d",
    "longUrl": "http:\/\/google.com\/"
}