Javascript 从字符串中提取数据
我把它当作一根绳子。我已经使用jquery并从网页上解析了它 我尝试使用jQuery.parseJSON,得到了错误Javascript 从字符串中提取数据,javascript,jquery,json,Javascript,Jquery,Json,我把它当作一根绳子。我已经使用jquery并从网页上解析了它 我尝试使用jQuery.parseJSON,得到了错误Uncaught SyntaxError:Unexpected token n 我需要“surl”和“imgurl”怎么才能得到这个 { ns:"images", k:"5061", mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F", surl:"http://polyhouse2011.wordpress
Uncaught SyntaxError:Unexpected token n
我需要“surl”和“imgurl”怎么才能得到这个
{
ns:"images",
k:"5061",
mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
ow:"480",
docid:"608038082569896450",
oh:"301",
tft:"117",
dls:"images,5487"
}
此字符串的来源:
<a href="#" q="{ns:"images",k:"5061",mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",ow:"480",docid:"608038082569896450",oh:"301",tft:"117",dls:"images,5487"}"></a>
这是一个有效的JSON字符串:
{
"ns": "images",
"k": "5061",
"mid": "172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
"surl": "http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
"imgurl": "http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
"ow": "480",
"docid": "608038082569896450",
"oh": "301",
"tft": "117",
"dls": "images,5487"
}
如果您的JSON字符串中出现错误,请通过联机检查其验证,我希望它会对您有所帮助。如果您使用的是
object
format而不是JSON
format,则如果您确实喜欢以下代码,则它是正确的:
var obj = {
ns:"images",
k:"5061",
mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
ow:"480",
docid:"608038082569896450",
oh:"301",
tft:"117",
dls:"images,5487"
}
因此,如果您想要获得
surl
和imgurl
:只需执行:obj.surl
和obj.imgurl
如果您没有编辑JSON信息的选项,可以这样做以使其成为有效的JSON对象。我会说,由于安全原因,包含eval可能是不好的,但从长远来看,这将使JSON成为一个有效的对象
var object = '{ \
ns: "images", \
k: "5061", \
mid: "172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F", \
surl: "http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/", \
imgurl: "http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif", \
ow: "480", \
docid: "60808082569896450", \
oh: "301", \
tft: "117", \
dls: "images5487" \
}';
var json = JSON.stringify(eval("(" + object + ")"));
var o = $.parseJSON(json);
希望这有帮助。如果你有任何问题,请告诉我 为了方便起见,我的示例假设您的锚点有一个id。如果没有所有不必要的转义,您将得到以下结果:
var str = document.getElementById('a').getAttribute('q');
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json)
var surl = obj.srl;
但是您确实应该将属性数据更改为正确的解析JSON。这不是有效的JSON,需要引用标识符,即“ns”:“images”。好的,既然我没有办法更改此字符串,我该如何进行排序?等等。jQuery在
.getJSON
和上自动解析JSON数据。ajax
请求并返回一个实际对象,因此您应该能够执行响应.surl而无需解析它。看起来你正在试图解析一个对象,这就是你出错的原因。@kannu你能分享一些代码,说明你如何检索“字符串”吗?@Andy这不是来自ajax请求,ci:数据被添加到锚定标记中,我必须从那里提取。这不是问题的答案。再读一遍。@ci_u我读了那个问题,在json字符串中得到了错误。所以我回答了关于有效json字符串的问题,现在如果解析该字符串,就可以轻松访问surl和imgurl值。转义纯粹是因为我喜欢按照json的格式来看待它,但我知道他将它放在字符串中,所以这只是我的偏好。另外,当我回答这个问题时,HTML部分不在问题的范围之内。为什么呢,先生。知道了HTML部分,你的答案就更优雅了:)谢谢,这很有效,我还投票给了@wrxsti。我不知道HTML对这一点很重要,我认为只有字符串才能做到。。