更新 TJSONArray
Update 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
的值。然后,您可以获得 tokens
字段的 TJSONPair
并将新的 TJSONArray
设置为其 JsonValue
.
如果这不符合您的喜好,请寻找支持您感兴趣的编辑功能的第 3 方 JSON 库。
如何正确更新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
的值。然后,您可以获得tokens
字段的TJSONPair
并将新的TJSONArray
设置为其JsonValue
.
如果这不符合您的喜好,请寻找支持您感兴趣的编辑功能的第 3 方 JSON 库。