Poco::JSON::Object::Ptr 设置功能在 1.6.1 上不起作用

Poco::JSON::Object::Ptr set function not working on 1.6.1

我有一段代码如下:

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 v 1.6.0 中,这完全可以正常工作,并且 v 的内容根据 set 函数进行了更改,但是在 1.6.1 中它不再起作用,1.6 之间的 set 函数调用是否有区别.0 和 1.6.1?或者潜在的问题是什么? (我目前的观察是在1.6.1中set line根本没有执行。)

感谢您阅读本文。

注意:如果有任何变通方法可以达到相同的效果但不必使用 set 函数,我将不胜感激。

所以今天找到了答案,决定分享给大家。

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