You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi Alexandria获取JSON响应时正斜杠被加反斜杠转义如何解决

问题背景

在JSON响应处理场景中,Delphi Alexandria版本下使用REST组件获取接口返回时,字符串内包含的正斜杠字符会被自动添加前置反斜杠转义,相同代码在Delphi Berlin版本运行无该异常。
获取API响应的代码如下:

procedure GetJSONInformation;
var
  objResponse : TRESTResponse;
  objClient : TRESTClient;
  objRequest : TRESTRequest;
  sJSONResponse : string;
begin
  objResponse  := TRESTResponse.Create(nil);
  objClient := TRESTClient.Create(nil);
  objClient.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
  objClient.AcceptCharset := 'UTF-8, *;q=0.8';
  objRequest := TRESTRequest.Create(nil);
  objRequest.Method := rmGET;
  objRequest.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
  objRequest.AcceptCharset := 'UTF-8, *;q=0.8';
  objRequest.Client := objClient;
  objRequest.Response:= objResponse;
  try
    objClient.BaseURL := 'https://sample.net';
    ObjRequest.Resource := 'api/GetInformation/{Param1}/{Param2}';
    ObjRequest.AddParameter('Param1', 'Parameter1', TRESTRequestParameterKind.pkURLSEGMENT);
    ObjRequest.AddParameter('Param2', 'Parameter2', TRESTRequestParameterKind.pkURLSEGMENT);
    ObjRequest.Execute;
    if ObjResponse.StatusCode = 200 then
      sJSONResponse:= ObjResponse.JsonText;  // 此处获取到带多余转义的JSON响应
  finally
    FreeAndNil(objRequest);
    FreeAndNil(objClient);
    FreeAndNil(objResponse);
  end;
end;
异常表现

接口实际返回带多余转义的内容片段:

"Date": "04\/13\/2022",
"stringdata": "DEC\/ACB test",

预期的正确返回内容片段:

"Date": "04/13/2022",
"stringdata": "DEC/ACB test",
解决方案

该问题是Alexandria版本内置JSON序列化逻辑默认开启了正斜杠转义规则导致,可通过以下三种方案修复,优先选择前两种:

  • 方案1:直接获取原始响应内容,不使用重新序列化后的JsonText属性。将赋值行替换为读取Content属性,该属性返回接口原始返回的未加工文本,不会被组件额外添加转义符:
    sJSONResponse := ObjResponse.Content;
    
  • 方案2:修改JSON写入器配置,关闭正斜杠转义。执行请求前添加如下配置(需引用System.JSON单元),即可让JsonText输出结果和旧版本行为一致:
    objResponse.JSONWriterOptions.EscapeSolidus := False;
    
  • 方案3:兜底字符串替换。如果不方便调整前两处逻辑,可在获取到响应文本后全局替换转义组合:
    sJSONResponse := StringReplace(sJSONResponse, '\/', '/', [rfReplaceAll]);
    
    注意:该方案为兼容处理,仅在前两种方案无法落地时使用,极端场景下可能误替换JSON中合法的转义组合。

内容的提问来源于stack exchange,提问作者Naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:12:17