从字符串

时间:2015-05-08 12:59:10

标签: javascript jquery json

我把它作为一个字符串。我使用jquery并从网页解析它。

我尝试使用jQuery.parseJSON并收到错误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>

4 个答案:

答案 0 :(得分:4)

我的示例假设您的主持人有一个id以方便使用。如果you use wrxsti's answer没有完全不必要的转义,那么你就明白了:

var str = document.getElementById('a').getAttribute('q');
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json)
var surl = obj.srl;

DEMO

但是你真的应该将属性数据改为正确解析JSON。

答案 1 :(得分:3)

如果您没有编辑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);

DEMO

希望这会有所帮助。如果您有任何问题,请告诉我们!

答案 2 :(得分:1)

这是一个有效的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字符串中出现错误,请通过http://jsonlint.com/在线检查其验证,我希望它能为您提供帮助。

答案 3 :(得分:1)

您使用object格式而不是json格式,如果您喜欢以下代码,则该格式正确无误:

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"
}

因此,如果您想获得surlimgurl:只需执行:obj.surl;obj.imgurl