【发布时间】:2015-05-16 16:13:52
【问题描述】:
我需要编写一个使用套接字与服务器通信的客户端。消息协议为 json 格式。服务器将根据需要将多个 json 块推送到客户端。 消息是这样的:
{"a": 1, "b": { "c": 1}}{"a": 1, "b": { "c": 1}}...
您可以看到json块之间没有分隔符或标识符。
我能找到的 json 解析器(如 fastjson、jackson)都只能将流作为一个完整的 json 块来处理,即使是它们提供的流 api。当我使用这些api解析流时,它们会在第一个json块的末尾抛出一个异常,表示下一个标记“{”无效。
java中是否有一个json解析器可以处理我的问题?还是有其他方法可以解决这个问题?
【问题讨论】:
-
我检查了上面链接中的答案。情况有点不同。服务器通过流提供json,所以我不能轻易使用正则表达式。
-
你不能将流转换为字符串然后使用正则表达式吗?
-
所以结果就像一个数组,只是它不是任何 JSON 解析器的数组。你有嵌套的 JSON 块吗?我的意思是,你能假设
}{总是将一个元素与下一个元素分开吗? -
@Magnamag 是的,我有嵌套块。所以我不能只用“}{”分隔块,字段值中也可能有“{”、“}”。