假设我有一个包含JSON的字符串:
{"foo":"bar"}
然后我可以使用JSON.parse
函数轻松解析它。
现在假设字符串有一些额外的前缀,例如:
blah: {"foo":"bar"}
当然,简单地使用JSON.parse
不起作用。我需要做的是提取子字符串然后运行该函数。现在假设我不知道前缀的内容或长度(即,我不知道它是否以冒号和空格结束,或者它是否总是六个字符长,或者......):什么是解析包含的JSON的最佳方法是什么?
最明显的方法可能是找到第一个{
的索引,但如果字符串本身包含{
,则不会起作用。
有更好的,即更可靠的方法吗?
答案 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。