Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/3party
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-03-10 16:03:32 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:52:54 +0300
commit9be9318a5e40ba29bc48c2c2f4deecee4cb09498 (patch)
treebb5904179f0c91dec36c4a66fecf7e0c6a393288 /3party
parent9e24ab84e209693da87049c5e5bb233520340ebe (diff)
Adding FromJSONObjectOptionalField function for parsing optional json fields.
Diffstat (limited to '3party')
-rw-r--r--3party/jansson/myjansson.cpp42
-rw-r--r--3party/jansson/myjansson.hpp4
2 files changed, 46 insertions, 0 deletions
diff --git a/3party/jansson/myjansson.cpp b/3party/jansson/myjansson.cpp
index c91c9ea420..0402cc4fce 100644
--- a/3party/jansson/myjansson.cpp
+++ b/3party/jansson/myjansson.cpp
@@ -37,4 +37,46 @@ void FromJSONObject(json_t * root, string const & field, double & result)
MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
result = json_number_value(val);
}
+
+void FromJSONObject(json_t * root, string const & field, json_int_t & result)
+{
+ if (!json_is_object(root))
+ MYTHROW(my::Json::Exception, ("Bad json object when parsing", field));
+ json_t * val = json_object_get(root, field.c_str());
+ if (!val)
+ MYTHROW(my::Json::Exception, ("Obligatory field", field, "is absent."));
+ if (!json_is_number(val))
+ MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
+ result = json_integer_value(val);
+}
+
+void FromJSONObjectOptionalField(json_t * root, string const & field, string & result)
+{
+ if (!json_is_object(root))
+ MYTHROW(my::Json::Exception, ("Bad json object when parsing", field));
+ json_t * val = json_object_get(root, field.c_str());
+ if (!val)
+ {
+ result = string("");
+ return;
+ }
+ if (!json_is_string(val))
+ MYTHROW(my::Json::Exception, ("The field", field, "must contain a json string."));
+ result = string(json_string_value(val));
+}
+
+void FromJSONObjectOptionalField(json_t * root, string const & field, json_int_t & result)
+{
+ if (!json_is_object(root))
+ MYTHROW(my::Json::Exception, ("Bad json object when parsing", field));
+ json_t * val = json_object_get(root, field.c_str());
+ if (!val)
+ {
+ result = 0;
+ return;
+ }
+ if (!json_is_number(val))
+ MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
+ result = json_integer_value(val);
+}
} // namespace my
diff --git a/3party/jansson/myjansson.hpp b/3party/jansson/myjansson.hpp
index 3c918b8ecf..7b6b587368 100644
--- a/3party/jansson/myjansson.hpp
+++ b/3party/jansson/myjansson.hpp
@@ -33,6 +33,7 @@ void FromJSON(json_t * root, string & result);
void FromJSONObject(json_t * root, string const & field, string & result);
void FromJSONObject(json_t * root, string const & field, strings::UniString & result);
void FromJSONObject(json_t * root, string const & field, double & result);
+void FromJSONObject(json_t * root, string const & field, json_int_t & result);
template <typename T>
void FromJSONObject(json_t * root, string const & field, vector<T> & result)
@@ -47,4 +48,7 @@ void FromJSONObject(json_t * root, string const & field, vector<T> & result)
for (size_t i = 0; i < sz; ++i)
FromJSON(json_array_get(arr, i), result[i]);
}
+
+void FromJSONObjectOptionalField(json_t * root, string const & field, string & result);
+void FromJSONObjectOptionalField(json_t * root, string const & field, json_int_t & result);
} // namespace my