]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add doubleFromJson
authorAki Tuomi <cmouse@cmouse.fi>
Fri, 8 Jan 2016 12:37:47 +0000 (14:37 +0200)
committerAki Tuomi <cmouse@cmouse.fi>
Mon, 11 Jan 2016 18:44:19 +0000 (20:44 +0200)
pdns/json.cc
pdns/json.hh

index c0fda4e7ae0249ded244d0111f052f06326d295b..29e24f2caff77eeca45844cafbfadf26af8bf77c 100644 (file)
@@ -53,6 +53,31 @@ int intFromJson(const Json container, const std::string& key, const int default_
   }
 }
 
+double doubleFromJson(const Json container, const std::string& key)
+{
+  auto val = container[key];
+  if (val.is_number()) {
+    return val.number_value();
+  } else if (val.is_string()) {
+    return std::stod(val.string_value());
+  } else {
+    throw JsonException("Key '" + string(key) + "' not an Integer or not present");
+  }
+}
+
+double doubleFromJson(const Json container, const std::string& key, const double default_value)
+{
+  auto val = container[key];
+  if (val.is_number()) {
+    return val.number_value();
+  } else if (val.is_string()) {
+    return std::stod(val.string_value());
+  } else {
+    // TODO: check if value really isn't present
+    return default_value;
+  }
+}
+
 string stringFromJson(const Json container, const std::string &key)
 {
   const Json val = container[key];
index ad214c5d611254d912a82e651f3fac5536570f56..9d08f27b08a85672535a5a928653f9f47845341f 100644 (file)
@@ -27,6 +27,8 @@
 
 int intFromJson(const json11::Json container, const std::string& key);
 int intFromJson(const json11::Json container, const std::string& key, const int default_value);
+double doubleFromJson(const json11::Json container, const std::string& key);
+double doubleFromJson(const json11::Json container, const std::string& key, const double default_value);
 std::string stringFromJson(const json11::Json container, const std::string &key);
 bool boolFromJson(const json11::Json container, const std::string& key);
 bool boolFromJson(const json11::Json container, const std::string& key, const bool default_value);