javascript - 将字符串拆分为 JSON 和非 JSON 部分

标签 javascript json node.js split

我有这样一个字符串:

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/

相关文章:

Node.js 模块 "fibers"没有采用正确的版本

javascript - Bootstrap Navbar-Collapse 不起作用

javascript - 使用严格模式 pragma 时如何声明全局变量

javascript - 模态防止点击外部无法使用javascript

Javascript - 将句子分割成多个单词到 Json 数组

node.js - AWS CI/CD 工作流程的最佳路径是什么? Cloudformation、SAM 还是无服务器框架?

javascript - 如何在不使用 moment js 的情况下从输入日期中取出日期名称

json - 将json解析为具有小写字段名称的数据结构

node.js - Koa-router 路由 url 不存在