【发布时间】:2016-08-04 00:48:09
【问题描述】:
我正在使用 Socket.IO 将数据移动到浏览器。发送的数据是一串 JSON 对象,到达浏览器后变成一大串 JSON。问题是,这个 JSON 不能被 JSON.parse() 解析,因为它不是“真正的”JSON。
数据结构可以是任意的,因此 RegEx 可能无法解决问题。而当前的设置只是暂时的。最终,这个 JSON 流将在服务器端进行预处理,因此不需要将流发送到浏览器,所以我想保留我现在拥有的 AJAX/Socket.IO 设置,而不是切换到JSON 流解析器,例如 OboeJS。
我可以做些什么来解析这个串联的 JSON 字符串?
为清楚起见,JSON 将如下所示:
{"a":"A"}{"b":"B"}{"c":"C"}
我正在尝试以一种可以访问它们的方式解析它:
console.log(Object.a) //A
console.log(Object.b) //B
console.log(Object.c) //C
【问题讨论】:
-
您想像收到 JSON 一样处理数据吗?您确定数据将始终采用
{}{}{}{}格式吗? -
@Dropout 是的,我愿意。并且它将始终采用
{}{}{}{}的格式,因为它将连接 JSON,但这会简化它。每个 JSON 可能都有嵌套数据,例如{{}{}}{}{}{};或者可能有类似{"a":"This is valid JSON}"} -
那不是 JSON。如果您有几个 JSON 只是连接在一起,您可以拆分它们并在数组上调用
JSON.parse,但如果您有类似 {{}{}}{{{}}{}{{}}}{{}你真的不能指望它被任何东西直接解析,因为很难将规则应用到这样的东西上。那只是垃圾输入数据。看起来你将不得不实现一些东西来翻译那些东西.. -
内部对象是有效的 JSON 格式,对还是错?因为在 JSON 内的字符串末尾添加
}不会使其无效。我不考虑正则表达式方法,所以这不是问题。 -
恕我直言,这个问题应该在数据提供者方面解决。尝试与他们讨论数据的格式。如果他们连接这些对象,他们当然可以像正常人一样输出该数组。我经常遇到这个问题,所以我知道这很容易说,但往往不是通过与数据提供方协商很容易解决,祝你好运!
标签: javascript json parsing stream frontend