用于 TCP 套接字的基于 C++ 流的 JSON 解析器

标签 c++ json parsing tcp

<分区>

我一直在寻找一种通过 tcp 套接字发送 JSON 并将其反序列化为对象的方法。我遇到的问题是,当我的消息太大时,TCP 会将其分 block 。通过这样做,我的客户只接收到 JSON 的一部分,解析器将该部分和以下部分作为格式错误的 JSON 发送。

我正在尝试寻找一种工具,允许我将我的 JSON 的部分 View 提供给它。第一次,我的缓冲区只包含部分 JSON,我将它发送到解析器,它返回一些指示 JSON 未完成的内容。下一次,当我将新信息附加到缓冲区时,解析器从它所在的最后一点继续并找到 JSON 消息的结尾(或者等待以防万一需要并且 JSON 分为两个以上的 block )并返回包含该 JSON 内容信息的内容,并将其从缓冲区中删除,来自流的下一个信息将附加到缓冲区中。

到目前为止,我发现了一些其他的想法,但针对其他语言(Java 在这一个:Is there a streaming API for JSON?)

最佳答案

我曾经遇到过类似的问题。

为了修复它,我确定了一个 block 的最大大小,并在发送之前手动将我的消息拆分为较小的大小。还将索引和最大索引附加到“手动 block ”以在接收方进行组装。

不确定这是否是最好的方法,但它完成了工作

关于用于 TCP 套接字的基于 C++ 流的 JSON 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485888/

相关文章:

javascript - 如何将 JSON 文件放入对象中并使用 AngularJS 显示它?

python - 将 Bash 解析为 Python

Python 2.7 - 如何将 MeCab 解析的信息写入文本文件?

javascript - 我可以依赖 JSON 数组的顺序吗?

ios - 如何一次解析一个 RSS 提要列表?

c++ - 无法修改数组中的对象队列

c++ - 尝试编译并收到以下错误,未定义对某些类的引用。

c++ - 调用 OpenGL 函数时程序崩溃

c++ - C++ 中的 GetProcAddress 函数

jquery - 从 json 兄弟中提取数据?