Status deserializeRowJSON(const std::string& json, Row& r) { auto doc = JSON::newObject(); if (!doc.fromString(json) || !doc.doc().IsObject()) { return Status(1, "Cannot deserializing JSON"); } return deserializeRow(doc.doc(), r); }
Status deserializeRowJSON(const std::string& json, Row& r) { pt::ptree tree; try { std::stringstream input; input << json; pt::read_json(input, tree); } catch (const pt::json_parser::json_parser_error& e) { return Status(1, e.what()); } return deserializeRow(tree, r); }
Status deserializeQueryData(const pt::ptree& tree, QueryData& qd) { for (const auto& i : tree) { Row r; auto status = deserializeRow(i.second, r); if (!status.ok()) { return status; } qd.push_back(r); } return Status(0, "OK"); }
Status deserializeRowJSON(const std::string& json, Row& r) { pt::ptree tree; try { std::stringstream j; j << json; pt::read_json(j, tree); } catch (const std::exception& e) { return Status(1, e.what()); } return deserializeRow(tree, r); }
Status deserializeQueryData(const rj::Value& v, QueryDataSet& qd) { if (!v.IsArray()) { return Status(1, "JSON object was not an array"); } for (const auto& i : v.GetArray()) { Row r; auto status = deserializeRow(i, r); if (!status.ok()) { return status; } qd.insert(std::move(r)); } return Status(); }
Status deserializeQueryData(const rj::Value& arr, QueryData& qd) { if (!arr.IsArray()) { return Status(1); } for (const auto& i : arr.GetArray()) { Row r; auto status = deserializeRow(i, r); if (!status.ok()) { return status; } qd.push_back(r); } return Status(); }