rapidjson icon indicating copy to clipboard operation
rapidjson copied to clipboard

多线程下prettywriter和stringbuffer构造json不完整

Open cvokay opened this issue 5 years ago • 5 comments

使用如下方式构造json: rapidjson::StringBuffer buf; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); 构造过程略去; std::string strJSON=buf.GetString(); printf(strJSON.c_str());

发现json较大时(大于1M),多次出现json格式后面部分不完整,残缺。在不大的时候,则从来不出现此类情况。试问,rapidjson在构造大json时有限制吗?怎么解决。

cvokay avatar Dec 21 '20 08:12 cvokay

不应该有问题。 你看看能不能做个能重现问题的测试用例?

miloyip avatar Dec 21 '20 08:12 miloyip

不应该有问题。 你看看能不能做个能重现问题的测试用例?

比较独立的模块,函数是可重入的没问题,组装json有不完整的情况发生,都是大json时候出现,也有成功组装的时候,json不断加大,则出现越显著。单线程测试还有一个现象,写法和前面一样,打印到控制台输出没问题,但是执行string strJSON=buf.GetString();后,通过查看调试状态看变量strJSON就发现json是不完整的,不知是rapidjson原因还是调试器原因。

cvokay avatar Dec 21 '20 09:12 cvokay

遇到了这个问题+1。输出一个文件时,偶发性的会有错误,大约3800行的一个json文件。有时只输出到1800行,有时输出到3000行,无法稳定重现。错误应该发生在strBuffer.GetString()处。

spwlyzx avatar Jan 14 '21 08:01 spwlyzx

遇到了这个问题+1。输出一个文件时,偶发性的会有错误,大约3800行的一个json文件。有时只输出到1800行,有时输出到3000行,无法稳定重现。错误应该发生在strBuffer.GetString()处。

============================================ 在构造过程就出现了问题,跟踪进去发现最后无法加入json键名或值,_stack无法增长,top无法上浮,里面的字符串不能自适应加大了

cvokay avatar Jan 16 '21 01:01 cvokay

我遇到类似问题,我这边的原因是:AddMember插入一个浮点数变量为nan时,输出的json不完整。FYI

pflcode avatar Aug 27 '24 10:08 pflcode