由于已经有很多问题,我有点担心要问......但是
我看过许多不同的问题,其中任何一个都没有为我工作。我有这个代码作为我的尝试,但它没有工作:
#include "boost/property_tree/ptree.hpp"
#include "boost/property_tree/json_parser.hpp"
using namespace boost::property_tree;
...
std::ifstream jsonFile("test_file.json");
if (!jsonFile){
std::cerr << "Error opening file\n";
return -1;
}
ptree pt;
json_parser::read_json(jsonFile, pt);
for (auto& array_element : pt) {
for (auto& property : array_element.second) {
std::cout << property.first << " = " << property.second.get_value<std::string>() << "\n";
}
}
其内容采用以下格式:
[{"number": 1234,"string": "hello world"}, {"number": 5678,"string": "foo bar"}, ... etc }]
我无法宣读1234
,然后是hello world
。事实上,它什么也没做。如何从我的.JSON
文件中读出来?
答案 0 :(得分:1)
我不完全确定问题是什么。它似乎工作(一旦你使JSON有效):
<强> Live On Coliru 强>
#include "boost/property_tree/ptree.hpp"
#include "boost/property_tree/json_parser.hpp"
int main() {
using boost::property_tree::ptree;
std::ifstream jsonFile("input.txt");
ptree pt;
read_json(jsonFile, pt);
for (auto & array_element: pt) {
for (auto & property: array_element.second) {
std::cout << property.first << " = " << property.second.get_value < std::string > () << "\n";
}
}
}
input.txt
包含:
[{"number": 1234, "string": "hello world"},{"number": 5678, "string": "foo bar"}]
打印
number = 1234
string = hello world
number = 5678
string = foo bar