26 #include <SimoxUtility/algorithm/string/string_tools.h>
45 return std::dynamic_pointer_cast<JsonArray>(data) != 0;
51 return std::dynamic_pointer_cast<JsonObject>(data) != 0;
57 return std::dynamic_pointer_cast<JsonValue>(data) != 0;
63 JsonValuePtr val = std::dynamic_pointer_cast<JsonValue>(data);
70 JsonValuePtr val = std::dynamic_pointer_cast<JsonValue>(data);
77 JsonValuePtr val = std::dynamic_pointer_cast<JsonValue>(data);
84 JsonValuePtr val = std::dynamic_pointer_cast<JsonValue>(data);
91 JsonValuePtr val = std::dynamic_pointer_cast<JsonValue>(data);
107 throw LocalException(
"JPathNavigator is not valid.");
111 std::vector<JPathNavigator>
116 std::vector<JPathNavigator> result;
117 select(parts, 0, result, limitToOne);
124 std::vector<JPathNavigator> result =
select(expr,
true);
131 std::vector<JPathNavigator>& result,
132 bool limitToOne)
const
134 if (partIndex >= parts.size())
139 std::string
part = parts.at(partIndex);
143 for (
size_t i = 0; i <
a->elements.size(); i++)
145 JPathNavigator(
a->elements.at(i), i,
"").select(parts, partIndex + 1, result);
146 if (limitToOne && result.size() > 0)
155 for (
const std::pair<std::string, JsonDataPtr>& pair : o->elements)
157 JPathNavigator(pair.second, -1, pair.first).select(parts, partIndex + 1, result);
158 if (limitToOne && result.size() > 0)
170 JPathNavigator(child, -1,
part).select(parts, partIndex + 1, result);
191 JsonObjectPtr o = std::dynamic_pointer_cast<JsonObject>(data);
194 throw LocalException(
"Invalid cast");
206 throw LocalException(
"Invalid cast");
218 throw LocalException(
"Invalid cast");