如何从字符串创建JS对象

时间:2015-08-03 05:14:02

标签: javascript arrays json object

我有一个字符串,其值为(根据console.log()):

j:{"address":"North Road 34 ","zip":"00002 ","state":"Texas ","city":"Dallas ","country":"US"}

我不知道为什么它从那封信开头,但我只对它里面的内容感兴趣。 我尝试过JSON.parse()但却抛出错误:'意外令牌:' j'。

eval()解决方案似乎也不起作用,它会引发意外的令牌:':'

谢谢!

4 个答案:

答案 0 :(得分:3)

嗯......唯一的解释是它不应该以{{1​​}}开头,因为它是无效的JSON,但确实如此(可能是因为一个错误)。

您可以通过从JSON字符串中删除无效前缀来轻松修复字符串以使其有效。

j:

答案 1 :(得分:1)

与plalx的答案相似,但领先的垃圾并不是硬编码:

var s = 'j:{"address":"North Road 34 ","zip":"00002 ","state":"Texas ","city":"Dallas  ","country":"US"} ';

// Strip everything up to leading "{":
var obj = JSON.parse(s.substring(s.indexOf('{')));

答案 2 :(得分:0)

只需删除不知道来自j:的地方,然后JSON.parse()即可。如果您需要帮助,请显示更多代码。

答案 3 :(得分:0)

你可以使用这个技巧。

var v="j:{"address":"North Road 34 ","zip":"00002 ","state":"Texas ","city":"Dallas  ","country":"US"}"

var rpVal=v.replace("j:","");

var yourObject=new someObject();

yourObject= eval("(" + rpVal+ ")");

这样您就可以轻松实现目标。