c++ - 更新 TJSONArray
问题描述
如何正确更新 json 值?这是我尝试过的,但没有运气:
TJSONArray *Data;
Data = (TJSONArray*) TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(json),0);
TJSONObject *obj = (TJSONObject*) Data->Get(0);
TJSONArray *arr = (TJSONArray*) obj->Get("tokens");
arr = (TJSONArray*) TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(arrjson),0);
数据:
[{"source":"aaaa","cluster":"1","tokens":[{},{}]}, {"source":"bbbb","cluster":"2","tokens":[{},{}]}]
解决方案
不幸的是,本机TJSONArray
不允许您用新值替换现有元素(为什么?谁知道)。您所能做的就是添加和删除元素,以及枚举元素。
由于您的数组包含TJSONObject
实例,因此要将此类元素替换为新对象,您必须:
从数组中删除所有元素,包括所需元素索引并在其后面,然后添加所需类型的新对象,然后重新添加删除的元素(按之前的顺序)。
构造一个全新
TJSONArray
的 ,然后根据需要向其中添加对象,并在需要的地方复制以前的值TJSONArray
。然后,您可以获取TJSONPair
该tokens
字段并将新设置TJSONArray
为其JsonValue
.
如果这不符合您的喜好,请寻找支持您感兴趣的编辑功能的第 3 方 JSON 库。
推荐阅读
- kubernetes - 如何在 yq 中的特定键之后在 yaml 中插入或添加字段
- c# - void* C++ 等效 C#
- python - 如何在 Github 存储库上将 python 数据帧作为 csv 文件加载?
- python - CoreML 模型在应用内更新后没有进行不同的分类
- c++ - C++17 和重载函数
- laravel - “database.php”文件的 Laravel 配置不起作用
- python - 如何在 pygame 程序中关闭 cmd?
- php - 登录页面不起作用导致未知页面
- python - 使用 pandas 提高性能
- c# - c# xslt 对大 xml 字符串的转换导致 aspx 超时