gpt4 book ai didi

c++ - 使用 POCO JSON 进行增量解析

转载 作者:行者123 更新时间:2023-11-30 02:39:58 25 4
gpt4 key购买 nike

我正在使用 POCO 1.6.0。我正在尝试编写一个服务,用于在原始套接字上接收 JSON 消息并对其进行解析。

但是,POCO 的解析器唯一可行的方法似乎是将整个字符串作为输入,然后返回解析结果,或者抛出“语法错误”异常。

所以这意味着每次新字节到达套接字时我都必须重新解析整个消息;并且目前还没有办法区分实际的语法错误和它只是一个不完整的消息。

parseChar 函数看起来不错,但它是私有(private)的。有没有办法让解析器解析一些消息并保持在该状态,以便我可以通过传递更多数据来恢复解析?

此外,是否有任何方法可以区分实际的语法错误和不完整的消息(最好是获得有关语法错误的确切性质的反馈)。

伪代码:

Poco::JSON::Parser parser;
std::string input_buffer;

for(;;)
{
// (append byte(s) from socket into input_buffer)
// (return failure if this read times out after 5 seconds)

parser.reset();
try
{
parser.parse(input_buffer);
break;
}
catch(Poco::Exception &e)
{
// (abort, but we don't know if data incomplete or data malformed
}
}

注意:我意识到这个问题可以通过让客户端按照 this thread 中的描述构建整个消息来解决。 ,但是我希望通过仅使格式正确的数据包足以定义帧(该问题的方法 5)来使客户端尽可能简单。

最佳答案

目前没有办法做任何你想做的事情。但是,它们都是合理的要求并且是可行的,因此将其放在TODO list 上。对于即将发布的版本之一。

关于c++ - 使用 POCO JSON 进行增量解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com