Does Boost Property Tree have methods for defining rules for the data to be parsed?

对着背影说爱祢 提交于 2019-12-08 07:29:11

问题


I have a project that will be using a single JSON file in order to describe the inner contents of the directory it is contained within. The Boost Property Tree library appears to be the best choice for a JSON parsing library. However, this JSON file (like many others) is expected to have a very particular layout, and so far I haven't found a good manner of expressing the rules in code.

Does the Boost Property Tree library have any methods allowing the user to do any of the following?

  • Disallowing unrecognized keys.
  • Specifying keys as required or optional.
  • Specifying the expected value type of keys (null, bool, int, float, array, dictionary).

So far I've found this previous question which shines some light on how to translate some JSON key-value pairs into data structures, but it doesn't answer whether any of the capabilities listed above are possible.


回答1:


Property Tree didn't take long for me to give up on due to lack of types (as sehe pointed out).

To take sehe's recommendation further, if you are dealing with JSON, I would recommend a user-friendly library like nlohmann's library instead. It is reasonably fast and intuitive.

There is also RapidJSON, which obsesses over every bit of memory allocation, etc, impacting usability, but the best performer in (its own) tests. I encountered difficulty with its handling of single-item arrays before moving to nlohmann's.




回答2:


None of the capabilities specified are supported.

Worse, Property Tree doesn't even support JSON data types. On the JSON side, everything will be string, no matter what.

Oh and arrays aren't directly supported: prepare for an ugly kludge.

All of these are in the 20 or so lines of documentation that explain JSON backend of Property Tree.

Because of these limitations, be smart and choose for a JSON library to build your requirements upon.



来源:https://stackoverflow.com/questions/44221676/does-boost-property-tree-have-methods-for-defining-rules-for-the-data-to-be-pars

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!