【发布时间】:2020-07-15 14:20:28
【问题描述】:
我正在尝试使用 Delphi 10.3 的 JSON 功能,但无法在 JSON 对象中更新值。 AddPair 创建一个新的对,即使名称已经存在并且我找不到设置值的方法,因为所有函数/属性都是只读的......
我真的必须删除这对并创建它吗?
【问题讨论】:
标签: json delphi-10.3-rio
我正在尝试使用 Delphi 10.3 的 JSON 功能,但无法在 JSON 对象中更新值。 AddPair 创建一个新的对,即使名称已经存在并且我找不到设置值的方法,因为所有函数/属性都是只读的......
我真的必须删除这对并创建它吗?
【问题讨论】:
标签: json delphi-10.3-rio
在里约之前,我喜欢做这样的事情:
Procedure AddValue(pObj: TJSONObject; pName: String; pJSONValue: TJSONValue);
var vJsonPair: TJsonPair;
begin
vJsonPair:= pObj.Get(pName);
if Assigned(vJsonPair) then
begin
//preserving the place
vJsonPair.JsonValue.free;
vJsonPair.JsonValue:= pJSONValue;
end
else
pObj.AddPair(pName, pJSONValue);
end;
但是,对于 Rio+,我必须这样做:
Procedure AddValue(pObj: TJSONObject; pName: String; pJSONValue: TJSONValue);
var vJsonPair: TJsonPair;
begin
vJsonPair:= pObj.Get(pName);
if Assigned(vJsonPair) then
begin
//putting the pair at the end of the object
pObj.RemovePair(pName);
pObj.AddPair(pName, pJSONValue);
end
else
pObj.AddPair(pName, pJSONValue);
end;
因此,使用 Delphi System.JSON,您必须检查该对是否存在以替换它。在 Rio 中,您必须删除并再次创建该对
【讨论】: