我正在计划一个协议,其中两个应用程序在它们之间打开一个套接字并发送和接收合法的 json 对象。
是否可以明确解析 json 对象序列,或者我需要分隔符,或者在每个对象前面加上它的长度或类似的东西?
我正在计划一个协议,其中两个应用程序在它们之间打开一个套接字并发送和接收合法的 json 对象。
是否可以明确解析 json 对象序列,或者我需要分隔符,或者在每个对象前面加上它的长度或类似的东西?
真正的 JSON 对象总是以匹配的 { 和 } 字符开始和结束。因此,您应该能够构建一个流解析器来正确确定动态边界,而无需提前知道长度。
有关语法的详细信息,请参见json.org。
有效的 JSON 对象具有平衡的分隔符。
你能 100% 确定你只会收到有效的对象吗?你会遇到网络故障吗?如果发送者在传输过程中死亡怎么办?我认为您将需要:
一种)。关于您收到的 JSON 对象的一些协议,以便您可以忽略部分流,直到您看到您同意的有效负载之一的开始。例如。一切都是“信封”对象
乙)。类似堆栈的恢复机制推动和“弹出”计数打开和关闭分隔符,直到您确定您有一个新记录的开始。由于足够病态的腐败,这听起来很难可靠地做到。
我非常喜欢第一种选择。