21 #include "jubatus/util/text/json.h"
24 using jubatus::util::text::json::json_array;
25 using jubatus::util::text::json::json_bool;
26 using jubatus::util::text::json::json_float;
27 using jubatus::util::text::json::json_integer;
28 using jubatus::util::text::json::json_null;
29 using jubatus::util::text::json::json_object;
30 using jubatus::util::text::json::json_string;
34 namespace fv_converter {
41 const jubatus::util::text::json::json&
json,
42 std::string& root_path,
46 const json_integer& value,
47 const std::string& path,
49 ret_datum.num_values_.push_back(std::make_pair(path, value.get()));
53 const json_float& value,
54 const std::string& path,
56 ret_datum.num_values_.push_back(std::make_pair(path, value.get()));
60 const json_string& value,
61 const std::string& path,
63 ret_datum.string_values_.push_back(std::make_pair(path, value.get()));
67 const json_bool& value,
68 const std::string& path,
70 double v = value.get() ? 1 : 0;
71 ret_datum.num_values_.push_back(std::make_pair(path, v));
75 const json_null& value,
76 const std::string& path,
78 ret_datum.string_values_.push_back(
79 std::make_pair(path, json_converter::NULL_STRING));
83 const jubatus::util::text::json::json_array& value,
86 size_t len = path.size();
87 for (
size_t i = 0; i < value.size(); ++i) {
88 std::ostringstream oss;
89 oss <<
"[" << i <<
"]";
91 iter_convert(value[i], path, ret_datum);
97 const json_object& value,
100 size_t len = path.size();
101 for (json_object::const_iterator it = value.begin(); it != value.end();
103 const std::string& key = it->first;
104 const jubatus::util::text::json::json& val = it->second;
107 iter_convert(val, path, ret_datum);
113 const jubatus::util::text::json::json&
json,
114 std::string& root_path,
116 jubatus::util::text::json::json_value* value = json.get();
117 if (
typeid(*value) ==
typeid(json_integer)) {
118 json_integer* int_value =
dynamic_cast<json_integer*
>(value);
119 convert_integer(*int_value, root_path, ret_datum);
121 }
else if (
typeid(*value) ==
typeid(json_float)) {
122 json_float* float_value =
dynamic_cast<json_float*
>(value);
123 convert_float(*float_value, root_path, ret_datum);
125 }
else if (
typeid(*value) ==
typeid(json_string)) {
126 json_string* string_value =
dynamic_cast<json_string*
>(value);
127 convert_string(*string_value, root_path, ret_datum);
129 }
else if (
typeid(*value) ==
typeid(json_bool)) {
130 json_bool* bool_value =
dynamic_cast<json_bool*
>(value);
131 convert_bool(*bool_value, root_path, ret_datum);
133 }
else if (
typeid(*value) ==
typeid(json_null)) {
134 json_null* null_value =
dynamic_cast<json_null*
>(value);
135 convert_null(*null_value, root_path, ret_datum);
137 }
else if (
typeid(*value) ==
typeid(jubatus::util::text::json::json_array)) {
138 json_array* array_value =
dynamic_cast<json_array*
>(value);
139 convert_array(*array_value, root_path, ret_datum);
141 }
else if (
typeid(*value) ==
typeid(json_object)) {
142 json_object* object_value =
dynamic_cast<json_object*
>(value);
143 convert_object(*object_value, root_path, ret_datum);
150 const jubatus::util::text::json::json& json,
152 std::string path =
"";
153 iter_convert(json, path, ret_datum);
static void convert(const jubatus::util::text::json::json &jason, datum &ret_datum)
static const char * NULL_STRING