我正在看一个看起来像这样的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] 举报,一经查实,本站将立刻删除。