diff --git a/include/json/reader.h b/include/json/reader.h index 154acbd..64650ec 100644 --- a/include/json/reader.h +++ b/include/json/reader.h @@ -285,7 +285,7 @@ Usage: \code using namespace Json; CharReaderBuilder builder; - builder.settings_["collectComments"] = false; + builder["collectComments"] = false; Value value; std::string errs; bool ok = parseFromStream(builder, std::cin, &value, &errs); @@ -337,6 +337,11 @@ public: * otherwise, indicate bad settings via 'invalid'. */ bool validate(Json::Value* invalid) const; + + /** A simple way to update a specific setting. + */ + Value& operator[](std::string key); + /** Called by ctor, but you can use this to reset settings_. * \pre 'settings' != NULL (but Json::null is fine) * \remark Defaults: diff --git a/include/json/writer.h b/include/json/writer.h index 36ed4b9..4c7a8bd 100644 --- a/include/json/writer.h +++ b/include/json/writer.h @@ -119,6 +119,10 @@ public: * otherwise, indicate bad settings via 'invalid'. */ bool validate(Json::Value* invalid) const; + /** A simple way to update a specific setting. + */ + Value& operator[](std::string key); + /** Called by ctor, but you can use this to reset settings_. * \pre 'settings' != NULL (but Json::null is fine) * \remark Defaults: diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp index 90b4fdb..b04b60a 100644 --- a/src/lib_json/json_reader.cpp +++ b/src/lib_json/json_reader.cpp @@ -1927,6 +1927,10 @@ bool CharReaderBuilder::validate(Json::Value* invalid) const } return 0u == inv.size(); } +Value& CharReaderBuilder::operator[](std::string key) +{ + return settings_[key]; +} // static void CharReaderBuilder::strictMode(Json::Value* settings) { diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index 9dbe53e..69323df 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -1122,6 +1122,10 @@ bool StreamWriterBuilder::validate(Json::Value* invalid) const } return 0u == inv.size(); } +Value& StreamWriterBuilder::operator[](std::string key) +{ + return settings_[key]; +} // static void StreamWriterBuilder::setDefaults(Json::Value* settings) { diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index 3a32519..69ecae3 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -2182,7 +2182,7 @@ JSONTEST_FIXTURE(BuilderTest, settings) { Json::CharReaderBuilder rb; JSONTEST_ASSERT_EQUAL(false, rb.settings_.isMember("foo")); JSONTEST_ASSERT_EQUAL(true, rb.validate(&errs)); - rb.settings_["foo"] = "bar"; + rb["foo"] = "bar"; JSONTEST_ASSERT_EQUAL(true, rb.settings_.isMember("foo")); JSONTEST_ASSERT_EQUAL(false, rb.validate(&errs)); } @@ -2191,7 +2191,7 @@ JSONTEST_FIXTURE(BuilderTest, settings) { Json::StreamWriterBuilder wb; JSONTEST_ASSERT_EQUAL(false, wb.settings_.isMember("foo")); JSONTEST_ASSERT_EQUAL(true, wb.validate(&errs)); - wb.settings_["foo"] = "bar"; + wb["foo"] = "bar"; JSONTEST_ASSERT_EQUAL(true, wb.settings_.isMember("foo")); JSONTEST_ASSERT_EQUAL(false, wb.validate(&errs)); }