From d07596a0ea5e66e2677568d4c45b8d9147c9173b Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 30 Mar 2017 17:39:02 +0200 Subject: [PATCH] :memo: mentioned #540 and fixed #538 --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 803234d8..f8174fa8 100644 --- a/README.md +++ b/README.md @@ -517,9 +517,9 @@ namespace ns { } void from_json(const json& j, person& p) { - p.name = j["name"].get(); - p.address = j["address"].get(); - p.age = j["age"].get(); + p.name = j.at("name").get(); + p.address = j.at("address").get(); + p.age = j.at("age").get(); } } // namespace ns ``` @@ -531,6 +531,7 @@ Some important things: * Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). * When using `get()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass this requirement described later.) +* In function `from_json`, use function [`at()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a93403e803947b86f4da2d1fb3345cf2c.html#a93403e803947b86f4da2d1fb3345cf2c) to access the object values rather than `operator[]`. In case a key does not exists, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior. #### How do I convert third-party types? @@ -833,6 +834,7 @@ I deeply appreciate the help of the following people. - [TedLyngmo](https://github.com/TedLyngmo) noted a typo in the README, removed unnecessary bit arithmetic, and fixed some `-Weffc++` warnings. - [Krzysztof Woś](https://github.com/krzysztofwos) made exceptions more visible. - [ftillier](https://github.com/ftillier) fixed a compiler warning. +- [tinloaf](https://github.com/tinloaf) made sure all pushed warnings are properly popped. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone.