Răsfoiți Sursa

Add overload `JsonObjectSuscript::set(value, decimals)` (issue #143)

Benoit Blanchon 10 ani în urmă
părinte
comite
9f3ce18f06

+ 5 - 0
CHANGELOG.md

@@ -1,6 +1,11 @@
 ArduinoJson: change log
 =======================
 
+v5.0.5
+------
+
+* Add overload `JsonObjectSuscript::set(value, decimals)` (issue #143)
+
 v5.0.4
 ------
 

+ 21 - 17
README.md

@@ -34,32 +34,36 @@ Quick start
 
 #### Decoding / Parsing
 
-    char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
+```c++
+char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
 
-    StaticJsonBuffer<200> jsonBuffer;
+StaticJsonBuffer<200> jsonBuffer;
 
-    JsonObject& root = jsonBuffer.parseObject(json);
+JsonObject& root = jsonBuffer.parseObject(json);
 
-    const char* sensor = root["sensor"];
-    long time          = root["time"];
-    double latitude    = root["data"][0];
-    double longitude   = root["data"][1];
+const char* sensor = root["sensor"];
+long time          = root["time"];
+double latitude    = root["data"][0];
+double longitude   = root["data"][1];
+```
 
 #### Encoding / Generating
 
-    StaticJsonBuffer<200> jsonBuffer;
+```c++
+StaticJsonBuffer<200> jsonBuffer;
 
-    JsonObject& root = jsonBuffer.createObject();
-    root["sensor"] = "gps";
-    root["time"] = 1351824120;
+JsonObject& root = jsonBuffer.createObject();
+root["sensor"] = "gps";
+root["time"] = 1351824120;
 
-    JsonArray& data = root.createNestedArray("data");
-    data.add(48.756080, 6);  // 6 is the number of decimals to print
-    data.add(2.302038, 6);   // if not specified, 2 digits are printed
+JsonArray& data = root.createNestedArray("data");
+data.add(48.756080, 6);  // 6 is the number of decimals to print
+data.add(2.302038, 6);   // if not specified, 2 digits are printed
 
-    root.printTo(Serial);
-    // This prints:
-    // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
+root.printTo(Serial);
+// This prints:
+// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
+``
 
 
 Documentation

+ 5 - 0
include/ArduinoJson/JsonObjectSubscript.hpp

@@ -54,6 +54,11 @@ class JsonObjectSubscript
     return _object.set(_key, value);
   }
 
+  template <typename TValue>
+  FORCE_INLINE bool set(TValue value, uint8_t decimals) {
+    return _object.set(_key, value, decimals);
+  }
+
   FORCE_INLINE JsonVariant get() { return _object.get(_key); }
 
   void writeTo(Internals::JsonWriter& writer) const {

+ 1 - 1
library.properties

@@ -1,5 +1,5 @@
 name=ArduinoJson
-version=5.0.4
+version=5.0.5
 author=Benoit Blanchon <blog.benoitblanchon.fr>
 maintainer=Benoit Blanchon <blog.benoitblanchon.fr>
 sentence=An efficient and elegant JSON library for Arduino.

+ 8 - 0
test/JsonObject_Set_Tests.cpp

@@ -46,6 +46,14 @@ TEST_(StoreDouble) {
   EXPECT_FALSE(_object["hello"].is<long>());
 }
 
+TEST_(StoreDoubleWithDigits) {
+  _object.set("hello", 123.45, 2);
+
+  EXPECT_EQ(123.45, _object["hello"].as<double>());
+  EXPECT_TRUE(_object["hello"].is<double>());
+  EXPECT_FALSE(_object["hello"].is<long>());
+}
+
 TEST_(StoreBoolean) {
   _object.set("hello", true);
 

+ 8 - 0
test/JsonObject_Subscript_Tests.cpp

@@ -46,6 +46,14 @@ TEST_(StoreDouble) {
   EXPECT_EQ(123.45, _object["hello"].as<double>());
 }
 
+TEST_(StoreDoubleWithDigits) {
+  _object["hello"].set(123.45, 2);
+
+  EXPECT_TRUE(_object["hello"].is<double>());
+  EXPECT_FALSE(_object["hello"].is<long>());
+  EXPECT_EQ(123.45, _object["hello"].as<double>());
+}
+
 TEST_(StoreBoolean) {
   _object["hello"] = true;