我有这样一个字符串:
var s = '{ "foo": { "bar": { "baz": 5 } } } Some more content';
JavaScript 中是否有可靠的方法将字符串拆分为 JSON 和非 JSON 部分?该字符串始终以有效的 JSON 开头,但除此之外,JSON 可以包含任何内容,因此计算大括号之类的技巧将不起作用。
我目前看到的最佳选择是使用 json-lint模块获取错误的位置并在错误位置拆分。
还有其他想法吗?
最佳答案
使用与 KevBot 相同的方法,但可能会消除很多try {} catch(e) {}
:
var s = '{ "foo": { "bar": { "baz": 5 } } } Some mo}re }content';
var offset = s.length + 1;
while (offset > 0) {
offset = s.lastIndexOf('}', offset - 1);
var maybe_json = s.slice(0, offset + 1);
try {
var json = JSON.parse(maybe_json);
break;
} catch (e) {}
}
var rest = s.slice(offset + 1);
console.log(json); // { "foo": { "bar": { "baz": 5 } } }
console.log(rest); // " Some mo}re }content"
关于javascript - 将字符串拆分为 JSON 和非 JSON 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37399044/