C++ 更新TJSONArray

C++ 更新TJSONArray,c++,delphi,c++builder,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 = (T

如何正确更新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);
数据:


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

由于数组包含
TJSONObject
实例,要用新对象替换此类元素,您必须:

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

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


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

    您的代码与JSON不匹配,并且您没有尝试实际更新数组内容。你到底想完成什么?你到底有什么困难?你有没有研究过
    TJSONArray
    的方法,比如
    Add()
    AddElement()
    ?或者它的
    Items[]
    property?@RemyLebeau我想更新tokens数组,我没有尝试Add或AddElement,因为它的方法名建议添加,但我想用新的tokens数组更新,我需要设置一个值,覆盖现有的值,这实际上很难用对象数组来完成(例如,使用字符串数组会更容易)。好的,这是有道理的,因为我花时间玩这个游戏,但没有找到合适的方法来实现。因此,我相信你的经验,如果没有其他答案能提供更好的解决方案,我会在接下来的几天接受你的答案。但你知道如果我完全替换对象(如:{“source”:“aaaa”,“cluster”:“1”,“tokens”:[{},{}]}或者可能从根数组中删除对象,然后添加更新的对象,该对象更新了tokens数组。我不确定使用本机方法是否可行
    [{"source":"aaaa","cluster":"1","tokens":[{},{}]}, {"source":"bbbb","cluster":"2","tokens":[{},{}]}]