in src/iceberg/json_internal.cc [242:256]
const std::function<Result<T>(const nlohmann::json&)>& from_json) {
std::vector<T> list{};
if (json.contains(key)) {
ICEBERG_ASSIGN_OR_RAISE(auto list_json, GetJsonValue<nlohmann::json>(json, key));
if (!list_json.is_array()) {
return JsonParseError("Cannot parse '{}' from non-array: {}", key,
list_json.dump());
}
for (const auto& entry_json : list_json) {
ICEBERG_ASSIGN_OR_RAISE(auto entry, from_json(entry_json));
list.emplace_back(std::move(entry));
}
}
return list;
}