微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在javascript中解析粘在一起的json

我正在看一个看起来像这样的json

{
    "key": "cow",
    "value": "woof"
}
{   
    "key": "dog",
    "value": "moo"
}

我想解析它,但JSON.parse不起作用,因为整个事情并不是真正的json.实际上也没有任何新行,所以它看起来像

{"key": "cow","value": "woof"}{"key": "dog","value": "moo"}

至于原因,这是来自Comet端点的流.理想情况下它应该一个一个地出现,但有时会出现中断,并且在它返回后我会收到自中断发生以来所发生的所有变化的列表.因此,如果在断开连接时有三个说法已经失效,我会在结束时立即得到它们:

{"key": "cow","value": "woof"}{"key": "dog","value": "moo"}{"key":"cat","value":"baaa"}

有没有方便的方法在浏览器中解析这种json?

编辑:对不起家伙,我没有提到对象可以任意嵌套,可以包含各种东西,Unicode字符,数组,对象,带有对象的数组,各种形状和大小的大括号等等.所以大多数hacky在这些情况下,字符串拆分或正则表达式解决方案将失败.我没有在示例中添加任何这些,因为我很懒,但更具代表性的例子可能是

{
    "key": "cow",
    "value": {
        "body": "big",
        "name": "sally",
        "children": [
            "bob",
            "daisy"
        ]
    },
    "alt-key": "牛"
}
{   
    "key": "dog",
    "value": "moo{}{}{}}}} i love brackets[[[]] ]]]]      }{}",
    "array": [
        "豆沙包",
        "叉烧包"
    ]
}

虽然正则表达式/ stringsplit的东西可以在95%的时间内工作,但我正在寻找一个严格正确的解决方案,当输入正确的json时它总能正常工作

解决方法:

如果是我,我只会编写一个理解JSON表达式流的JSON解析器. JSON与语法得到的解析一样容易,并且使得能够为一个新句子“重置”自己的解析器很简单(一旦解析器存在).

哎,你可以从json.org解析器本身开始.

为了可靠地“修复”你当前的数据是一个非常接近编写解析器的项目.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐