C++ Poco::JSON::Object::Ptr set函数在1.6.1上不起作用

C++ Poco::JSON::Object::Ptr set函数在1.6.1上不起作用,c++,json,poco-libraries,C++,Json,Poco Libraries,我有一段代码如下: Poco::JSON::Parser a; Poco::Dynamic::Var v = a.parse(str); //str is a json string Poco::JSON::Object::Ptr p = v.extract<Poco::JSON::Object::Ptr>(); p->set("key","value"); Poco::JSON::解析器a; Poco::Dynamic::Var v=a.parse(str)//str是一个

我有一段代码如下:

Poco::JSON::Parser a;
Poco::Dynamic::Var v = a.parse(str); //str is a json string
Poco::JSON::Object::Ptr p = v.extract<Poco::JSON::Object::Ptr>();
p->set("key","value");
Poco::JSON::解析器a;
Poco::Dynamic::Var v=a.parse(str)//str是一个json字符串
Poco::JSON::Object::Ptr p=v.extract();
p->set(“键”、“值”);
在Poco v 1.6.0中,它工作得很好,v的内容根据set函数而改变,但在1.6.1中它不再工作了,1.6.0和1.6.1之间的set函数调用有区别吗?或者潜在的问题是什么?(我目前的观察是,在1.6.1中,根本不执行设置行。)

谢谢你阅读这篇文章


注意:如果有任何解决方法可以达到相同的效果,但不必使用设置功能,我将不胜感激。

因此我今天找到了答案,并决定与大家分享

答:set()函数Poco::JSON::Object在1.6.0和1.6.1中有所不同。在1.6.1中,如果已经为该给定键分配了值,则该键将不起作用,而在1.6.0中,它将只覆盖该键。对于1.6.1来说,一个非常简单的解决方法是首先执行remove()函数,然后执行set()函数,然后它也会执行相同的操作。但是,实现是不同的,可以在Poco库的源代码中进行检查