且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用Boost ptree将JSON数组解析为std :: string

更新时间:2023-02-18 19:50:06

数组表示为具有许多""键的子节点:

Arrays are represented as child nodes with many "" keys:

文档

docs

  • JSON数组映射到节点.每个元素都是一个空名称的子节点.如果节点同时具有已命名和未命名的子节点,则无法将其映射到JSON表示形式.

在Coliru上直播

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using boost::property_tree::ptree;

int main() {
    std::string ss = "{ \"id\" : \"123\", \"number\" : \"456\", \"stuff\" : [{ \"name\" : \"test\" }, { \"name\" : \"some\" }, { \"name\" : \"stuffs\" }] }";

    ptree pt;
    std::istringstream is(ss);
    read_json(is, pt);

    std::cout << "id:     " << pt.get<std::string>("id") << "\n";
    std::cout << "number: " << pt.get<std::string>("number") << "\n";
    for (auto& e : pt.get_child("stuff")) {
        std::cout << "stuff name: " << e.second.get<std::string>("name") << "\n";
    }
}

打印

id:     123
number: 456
stuff name: test
stuff name: some
stuff name: stuffs