代码之家  ›  专栏  ›  技术社区  ›  waas1919

C++ PoCO——如何迭代思考JSON数组?

  •  1
  • waas1919  · 技术社区  · 6 年前

    我见过一些 examples JSON 对象如下:

     "{ \"test\" : { \"property\" : \"value\" } }"
    

    JSON文件 数组(the 儿童 array 下表):

    "{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }"
    

    我怎样才能做到这一点?

    我在任何地方都看不到一个例子,甚至在网上也看不到 POCO 文档。

    我在下面有这个示例,但无法获取

    Poco::Dynamic::Var test = object->get("children");
    
    Poco::JSON::Array::Ptr subObject = test.extract<Poco::JSON::Array::Ptr>();
    
    for (it = subObject->begin(); it != subObject->end(); it++) // how to iterate here?
    {
        std::cout << "my children:" << it->first << "\n";
    }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   rafix07    6 年前

    方法 begin end subObject 数组返回 JSON::Array::ConstIterator 其定义如下

    typedef std::vector<Dynamic::Var>::const_iterator ConstIterator;
    

    for (Poco::JSON::Array::ConstIterator it= subObject->begin(); it != subObject->end(); ++it)
    {
      // do sth here
    }
    

    当你知道的时候 it 指向 Dynamic::Var convert extract 获取字符串对象的方法:

    for (Poco::JSON::Array::ConstIterator it = subObject->begin(); it != subObject->end(); ++it)
    {
        std::cout << "my children:" << it->convert<std::string>() << "\n";
    }