- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JSON 文件,如下所示:
[{"id":"1","this":"that"},{"id":"2","that":"this"}]
我对如何改编 boost 文档中的 XML 5 分钟示例有点迷茫。
到目前为止,我已经了解了创建结构和一些基础知识:
struct sheet {
int id;
std::string info;
}
using boost::property_tree::ptree;
ptree pt;
read_json(filename, pt);
但我不知道如何让 BOOST_FOREACH 等为我工作?
最佳答案
这是使用 c++11 的快速演示
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <sstream>
#include <iostream>
static std::string const sample = R"([{"id":"1","this":"that"},{"id":"2","that":"this"}])";
int main() {
using namespace boost::property_tree;
ptree pt;
struct sheet { int id; std::string info; };
std::istringstream iss(sample);
read_json(iss, pt);
std::vector<sheet> sheets;
for(auto& e : pt)
{
std::string info = "(`this` not found)";
auto this_property = e.second.get_child_optional("this");
if (this_property)
info = this_property->get_value(info);
sheets.push_back(sheet {
e.second.get_child("id").get_value(-1),
info
});
}
for(auto s : sheets)
std::cout << s.id << "\t" << s.info << "\n";
}
打印:
1 that
2 (`this` not found)
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <sstream>
#include <iostream>
#include <boost/foreach.hpp>
struct sheet { int id; std::string info; };
static std::string const sample = "[{\"id\":\"1\",\"this\":\"that\"},{\"id\":\"2\",\"that\":\"this\"}]";
int main() {
using namespace boost::property_tree;
ptree pt;
std::istringstream iss(sample);
read_json(iss, pt);
std::vector<sheet> sheets;
BOOST_FOREACH(ptree::value_type e, pt)
{
std::string info = "(`this` not found)";
boost::optional<ptree&> this_property = e.second.get_child_optional("this");
if (this_property)
info = this_property->get_value(info);
sheet s;
s.id = e.second.get_child("id").get_value(-1);
s.info = info;
sheets.push_back(s);
}
BOOST_FOREACH(sheet s, sheets)
std::cout << s.id << "\t" << s.info << "\n";
}
打印相同
关于c++ - 使用 boost json_parser 需要指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118041/
在以下使用 C++ Boost 属性树的代码中,我希望得到一个漂亮的输出,例如 { "fruit": { "apple": "true", "orange": "true" }
我想使用 boost 的 json_parser 来读取 json 数据,我正在尝试找出我需要的依赖项。我在“boost\property_tree\detail\json_parser\read.h
我正在使用 json_parse 函数来解析从 Ajax 调用返回的数据。这在 FF 中效果很好,但在 IE7 中则不然。它非常非常慢,有时甚至会卡住浏览器。由于各种原因,我无法更改应用程序的逻辑。有
我有一个 JSON 文件,如下所示: [{"id":"1","this":"that"},{"id":"2","that":"this"}] 我对如何改编 boost 文档中的 XML 5 分钟示例有
我正在尝试从 boost::property_tree:ptree 对象中的字符串中保存一些数据: const char* data = "Here are json params"; boost:p
简介 std::string text = "á"; “á”是两个字节的字符(假设是 UTF-8 编码)。 所以下一行打印 2。 std::cout ("text", text); std::stri
我有以下代码: giant-data-barf.txt 文件,顾名思义,是一个巨大的文件(目前为 5.4mb,但可能会达到数 GB) 当我执行此脚本时,出现以下错误: Fatal error: Al
https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js在此链接中,Douglas Crockford 创建了一个 j
我非常快速地进行了测试,看看是否可以将我的 Twitter 提要通过管道传输到 boost 的 JSON 解析器。没有骰子。我的 JSON 解析器无法处理以下行: "profile_backgroun
是否可以打开路径中包含西里尔字母部分的文件?我能够读取/写入文件的西里尔内容,但我不知道如何打开文件 json_parser::read_json 只有 std::string 作为参数,没有 std
我试图读取压缩的 json 并遇到类型转换问题,这是代码 boost::iostreams::filtering_streambuf in; std::istringstream iss(std::i
我是一名优秀的程序员,十分优秀!