【问题标题】:How to update a JSON value?如何更新 JSON 值?
【发布时间】:2020-07-15 14:20:28
【问题描述】:

我正在尝试使用 Delphi 10.3 的 JSON 功能,但无法在 JSON 对象中更新值。 AddPair 创建一个新的对,即使名称已经存在并且我找不到设置值的方法,因为所有函数/属性都是只读的......

我真的必须删除这对并创建它吗?

【问题讨论】:

标签: json delphi-10.3-rio


【解决方案1】:

在里约之前,我喜欢做这样的事情:

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 中,您必须删除并再次创建该对

【讨论】:

    猜你喜欢
    • 2021-02-01
    • 2017-06-20
    • 2020-09-08
    • 2017-09-19
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多