У меня есть запись Json с вложенными объектами и объектными массивами, ключи в этом поле содержат пробелы, я хочу изменить все пробелы на _
, поэтому мне нужно повторить все ключи в json object.rapidjson - рекурсивно изменить значение ключа с вложенным полем
Моя идея написать первый поиск глубины, чтобы перебрать все вложенные ключи, используя ConstMemberIterator
, мой вопрос в том, как изменить ключ с помощью его итератора?
В приведенном ниже примере представляет свою идею:
void DFSReplaceSpaceInKeys(Value::ConstMemberIterator& itr) {
// Replace space in nested key
std::string s(itr->name.GetString());
std::replace(s.begin(), s.end(), ' ', '_');
// set new string to key
itr->name.SetString(s, ?.GetAllocator()); // <----- How can I get the document allocator?
std::cout << "new key: " << itr->name.GetString() << std::endl;
// recursive call in DFS
if (itr->value.GetType() == Type::kObjectType) {
DFSReplaceSpaceInKeys(itr->value.GetObject().MemberBegin());
}
}
А Json запись пример:
{
"a": {"b": [{"c": [...]}, {...}]
}