C++ 更新TJSONArray
如何正确更新json值? 以下是我尝试过的,但没有运气: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
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":[{},{}]}]