JSON解析javascript与chrome控制台和eval

时间:2014-03-09 04:37:53

标签: javascript json

当我尝试解析

下面的JSON字符串时
'{"yearDuration" : "365","timeCapsule" : {"line" : { "entryDate"    : "1/1/2013", "exitDate"    : "12/31/2013" },"duration" : "365"}    }'

进入JSON对象 - 我收到以下错误

SyntaxError: Unexpected token '

然而,在chrome =>开发人员控制台,当我这样做时

JSON.parse('{"yearDuration" : "365","timeCapsule" : {"line" : { "entryDate" : "1/1/2013", "exitDate"    : "12/31/2013" },"duration" : "365"}    }');

我看到创建了JSON对象 -

screenshot from the chrome console...

但是,当我尝试使用eval方法解释@ link它工作得很好......

var presenceByYear = '{"yearDuration" : "365","timeCapsule" : {"line" : { "entryDate"   : "1/1/2013", "exitDate"    : "12/31/2013" },"duration" : "365"}    }';
var brktPrefixPresenceByYear= '(' + presenceByYear + ')';
var presenceByYearObj = eval(brktPrefixPresenceByYear);

有人可以帮我弄清楚JSON.parse出了什么问题吗?

谢谢

2 个答案:

答案 0 :(得分:0)

所以,我正在构建带有一组变量的JSON字符串,最后是

var presenceByYearStrPrefix = "'{\"yearDuration\" : \"" + 2013 + "\",";
var presenceByYearStrSuffix = " }'";

在一些循环和方法调用中进行一些计算后 -

var timeCapsuleStr = '"timeCapsule" : {"line" : { "entryDate"   : "1/1/2013", "exitDate"    : "12/31/2013" },"duration" : "365"}';

最后,创建了JSON字符串 -

var presenceByYear = presenceByYearStrPrefix + timeCapsuleStr + presenceByYearStrSuffix;

在我发布这个问题之后,我意识到我不需要在presenceByYearStrPrefix和presenceByYearStrSuffix变量的开头和结尾处使用单引号,因为presenceByYear的连接值本身就是一个字符串。

在下面的新变量值上调用JSON.parse -

var presenceByYearStrPrefix = "{\"yearDuration\" : \"" + 2013 + "\",";
var presenceByYearStrSuffix = " }";
var timeCapsuleStr = '"timeCapsule" : {"line" : { "entryDate"   : "1/1/2013", "exitDate"    : "12/31/2013" },"duration" : "365"}';
var presenceByYear = presenceByYearStrPrefix + timeCapsuleStr + presenceByYearStrSuffix;

它就像魅力一样!

感谢你花了几分钟来回顾这个问题!! : - )

祝你有个美好的一天!

答案 1 :(得分:0)

您的JSON无效。

Parse error on line 1:
'{    "yearDuration
^
Expecting '{', '['

根据http://jsonlint.com/