从(子)字符串解析JSON

时间:2015-10-12 13:42:45

标签: json parsing

假设我有一个包含JSON的字符串:

{"foo":"bar"}

然后我可以使用JSON.parse函数轻松解析它。

现在假设字符串有一些额外的前缀,例如:

blah: {"foo":"bar"}

当然,简单地使用JSON.parse不起作用。我需要做的是提取子字符串然后运行该函数。现在假设我不知道前缀的内容或长度(即,我不知道它是否以冒号和空格结束,或者它是否总是六个字符长,或者......):什么是解析包含的JSON的最佳方法是什么?

最明显的方法可能是找到第一个{的索引,但如果字符串本身包含{,则不会起作用。

有更好的,即更可靠的方法吗?

2 个答案:

答案 0 :(得分:2)

您可能希望使用replace删除前缀,例如:

test = 'blah: {"foo":"bar"}';
test = test.replace(/^.*?{/, "{");
alert(test);

以上正则表达式适用于:

blah: {"foo":"bar"}
blah{"foo":"bar"}
blah:{"foo":"bar"}
blah {"foo":"bar"}

答案 1 :(得分:1)

如果你不知道关于前缀的任何,我想你可能不得不一次删除一个字符并尝试将余数解析为JSON。一旦你成功,你就会找到起点。

如果解析失败,将抛出一个您显然必须处理的SyntaxError。