更新TJSONArray

时间:2018-12-05 14:55:13

标签: c++ delphi c++builder

如何正确更新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":[{},{}]}] 

1 个答案:

答案 0 :(得分:1)

不幸的是,TJSONArray不允许本机允许您用新值替换现有元素(为什么?谁知道)。您所能做的就是添加和删除元素,以及枚举元素。

由于数组中包含TJSONObject个实例,因此要用新对象替换此类元素,您将必须执行以下操作之一:

  1. 从数组中删除所有元素,包括并跟随所需的元素索引,然后添加所需类型的新对象,然后重新添加已删除的元素(按其先前的顺序)。

  2. 构造一个全新的TJSONArray,然后根据需要向其添加对象,并在需要时从先前的TJSONArray复制值。然后,您可以获取TJSONPair字段的tokens并将新的TJSONArray设置为其JsonValue

如果您不喜欢这种方法,请寻找一个支持您感兴趣的编辑功能的第三方JSON库。