mirror of
https://github.com/nlohmann/json.git
synced 2026-10-23 22:38:55 +00:00
1.7: json_pointer: flatten walk drops the primitive case list (#5891)
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
1 file changed
+21
-37
@@ -1462,50 +1462,34 @@ class json_pointer
|
|||||||
auto hint = object.end();
|
auto hint = object.end();
|
||||||
const auto enter = [&stack, &path, &object, &hint](const BasicJsonType & v)
|
const auto enter = [&stack, &path, &object, &hint](const BasicJsonType & v)
|
||||||
{
|
{
|
||||||
switch (v.type())
|
if (v.is_array())
|
||||||
{
|
{
|
||||||
case detail::value_t::array:
|
if (v.m_data.m_value.array->empty())
|
||||||
{
|
{
|
||||||
if (v.m_data.m_value.array->empty())
|
// flatten empty array as null
|
||||||
{
|
add_flattened(object, hint, path, nullptr, detail::priority_tag<2> {});
|
||||||
// flatten empty array as null
|
|
||||||
add_flattened(object, hint, path, nullptr, detail::priority_tag<2> {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stack.emplace_back(&v, object_const_iterator(), path.size());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
case detail::value_t::object:
|
|
||||||
{
|
{
|
||||||
if (v.m_data.m_value.object->empty())
|
stack.emplace_back(&v, object_const_iterator(), path.size());
|
||||||
{
|
|
||||||
// flatten empty object as null
|
|
||||||
add_flattened(object, hint, path, nullptr, detail::priority_tag<2> {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stack.emplace_back(&v, v.m_data.m_value.object->begin(), path.size());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case detail::value_t::null:
|
else if (v.is_object())
|
||||||
case detail::value_t::string:
|
{
|
||||||
case detail::value_t::boolean:
|
if (v.m_data.m_value.object->empty())
|
||||||
case detail::value_t::number_integer:
|
|
||||||
case detail::value_t::number_unsigned:
|
|
||||||
case detail::value_t::number_float:
|
|
||||||
case detail::value_t::binary:
|
|
||||||
case detail::value_t::discarded:
|
|
||||||
default:
|
|
||||||
{
|
{
|
||||||
// add a primitive value with its reference string
|
// flatten empty object as null
|
||||||
add_flattened(object, hint, path, v, detail::priority_tag<2> {});
|
add_flattened(object, hint, path, nullptr, detail::priority_tag<2> {});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stack.emplace_back(&v, v.m_data.m_value.object->begin(), path.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// add a primitive value with its reference string
|
||||||
|
add_flattened(object, hint, path, v, detail::priority_tag<2> {});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user