问题标签 [boost-propertytree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1554 浏览

c++ - C ++提升property_tree将json存储到字符串

您好,我正在尝试从使用 CURL 时从 API 获取的 json 字符串中存储某些值。

当前代码:

我一直在查看一些用于获取所有值的示例,但是在我的情况下, current.priceBOOST_FOREACH()中只有 1 个值存储以供参考: https ://gist.github.com/mloskot/1509935

给出错误:

还有更多文本,我没有看到明显的错误,但我当前的代码有问题。

请注意:用(尝试写入文件)替换read_json(从 std::string 或文件中读取)编译得很好,但由于无法创建/写入文件而获得核心转储。不过我不想写 json,所以我不确定我的代码目前有什么问题。write_json

任何建议、链接、提示/提示 - 非常感谢。

0 投票
1 回答
469 浏览

boost - 使用 Boost Property Tree 替换 DOM Parser

我需要使用 Boost 属性树编写一个 XML 解析器,它可以替换现有的 MSXML DOM 解析器。基本上我的代码应该返回子节点列表、子节点数量等。这可以使用属性树来实现吗?例如。GetfirstChild()、selectNodes()、Getlength() 等。

我看到了很多与 Boost Property Tree 相关的 API,但文档似乎很少且令人困惑。到目前为止,我能够使用 BOOST_FOREACH 解析整个 XML。但是每个节点的路径都是硬编码的,这不符合我的目的。

0 投票
1 回答
14263 浏览

c++ - C ++ boost属性树获取值

过去两天我一直在尝试找出如何在 C++ 中执行以下操作:

我有一个 json 字符串:

我想遍历所有这些孩子并将例如 PlayerID 的值放入 a 中std::vector,以便我可以返回所有这些孩子。

我被困的地方在这里:

我查看了文档,但找不到任何好的东西。此外,我已经尝试了几乎所有的东西,如果它编译没有错误,它会给我 what() 预期的对象或类似的东西。我真的被困住了,任何帮助表示赞赏!提前致谢。

0 投票
2 回答
2946 浏览

c++ - 如何使用 Boost 扩展 .ini 文件中的环境变量

我有一个类似的 INI 文件

并想使用 Boost 解析它。我尝试使用 Boost property_tree 之类的

但它没有扩展环境变量。输出看起来像

我期待类似的东西

我不确定是否可以使用 boost property_tree。

我将不胜感激使用 boost 解析此类文件的任何提示。

0 投票
1 回答
4734 浏览

boost-propertytree - 我们如何在另一个 boost ptree 中插入一个 boost ptree 作为节点?

我想在 C++ 中序列化分层数据结构。我正在从事的项目使用 boost,所以我将boost::property_tree::ptree其用作我的数据节点结构。

我们有更高级别的结构,例如Person包含较低级别结构的实例Job(每个人都有一份工作)。Person并且Job每个实现一个ptreeify方法。这个想法是通过让每个对象调用ptreeify它包含的每个其他对象来序列化层次结构。然后将生成的子对象的属性树作为节点插入到包含对象的属性树中。问题是我无法弄清楚如何实际进行插入。

遵循此 SO 帖子会导致运行时错误。我缺乏了解导致它的原因所需的知识/经验。请参阅下面的代码。

我也发现了这个非常相似的问题,但我根本不明白答案,我怀疑使用insert避免了那里发现的并发症。

问题:如何将属性树作为节点插入到另一个属性树中?

这是实际的代码。运行时错误发生在Person::ptreeify.

0 投票
1 回答
406 浏览

c++ - 如何读取具有相同标签名称的对等值的 Boost property_map

我正在使用来自 Boost c++ library v1.53 的 property_map,它对我来说非常有用,除了我无法弄清楚如何解析彼此同名的数据节点。如以下 XML 所示:

除了底部“CS”标签下的“I”数据节点元素之外,我可以解析上面的所有内容。我正在尝试使用代码:


那么如何遍历“CS”节点下的“I”值对等点呢?

0 投票
1 回答
667 浏览

c++ - 在 C++ 中使用 boost::property_tree 库函数读取 XML 数据

我有一个 XML 文档,它用相同的关键字描述了 2 种类型的航班。子字段取决于航班的类型。我必须根据航班类型读取 XML 并将其存储到 C++ 数据类中。

这是我用于此目的的代码段。

当我尝试运行上面的代码时,里面什么都没有FlightClass。我尝试调试上面的代码,发现v1.first只获取值“carrier”、“number”和“value”。我很惊讶,因为这些是酋长国航班类型的参数。我无法收到国泰航空的航班信息。请帮我找出问题所在。我真的很想从这个 XML 文件中获取国泰航空航班的信息并存储到 C++ 数据类中。我应该怎么做才能纠正这个?

注意:BOOST_FOREACH我尝试了而不是 second ,v.second.get_child("flight");但它引发了异常。然后我将上面的替换v.second.get_child("flight_class");为它的子字段,例如:类型和票价。这可能是什么原因?似乎它正在返回其孙节点。

0 投票
3 回答
3198 浏览

c++ - 从 json 文件构造 boost 属性树的性能很差?

我正在使用 boost 属性树来加载/转储 json 文件。但是,性能非常糟糕。

例如,我有一个大小为 1.8M 的 json 文件。boost C++程序花费3秒加载json文件并构建属性树。如果我使用 python 加载 json 文件,它只需要 0.1 秒。并且 python 也会将所有东西都构造为对象。

C++ 程序是这样的:

做同样事情的python脚本就像:

我尝试了最新的提升(1.54)。这样做仍然很慢。

感谢任何建议。

如果没有解决方案,您是否知道任何其他用于加载/转储 json 的 C++ 库?

0 投票
1 回答
6711 浏览

json - 提升 read_json 和 C++11

我正在尝试使用 Boost 的 property_tree 解析器和 C++11 代码解析 JSON(我的系统是带有 gcc 4.7.2 和 Boost 1.49 的 Debian Wheezy)。我尝试了以下基于使用 boost 的序列化和反序列化 json的代码:

如果我用g++ -std=c++03 -c' everything is fine. However, I also want to use C++11 features (which the code in the linked thread actually does!). But withg++ -std=c++11 -c' 编译它,我会得到编译错误:

如何在 C++11 中使用 Boost 的 read_json?我是否需要一个更新的 Boost 版本(即从源代码手动安装,而不是使用 Wheezy 的打包版本)?我的代码有问题吗?或者这根本不可能?

0 投票
1 回答
379 浏览

jquery - Two unicode code-points when using json_write()?

When using boost::property_tree::write_json() to write a JSON file, all unicode characters will be represented as two "/u"-code points.

  • So ä will become \u00C3\u00A4.

My problem is, that I am generating a JSON file which will be read via JQuery to be shown in a web page. In that case, this pair will be shown as two separated unicode symbols.

  • So ä looks like ä

Is there a way to configure the output encoding to get a single Utf16 code point? Or is there a way to tell jQuery to use both code-points as one?

Also, why is ä becoming \u00C3\u00A4 instead of \u00E4? I really don't get it.

Thanks for help!