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

Apex类中如何使用变量设置setBody?

在Apex的setBody中使用变量替换固定JSON值的解决方法

方法1:直接字符串拼接

手动调整拼接逻辑,将固定值替换为变量并保留JSON要求的引号:

// 先定义并赋值目标变量
String variable1 = '1646149510';

String body = '{'+
               '"query": {' +
      '              "value": "' + variable1 + '"   ' +
      '        }' +
    '      }';

req.setBody(body);

注意:必须用"(转义双引号)包裹变量,否则生成的JSON格式会失效。

方法2:使用String.format格式化字符串

这种方式可读性更强,避免拼接时的符号混乱:

String variable1 = '1646149510';

// 用{0}作为变量占位符
String bodyTemplate = '{'+
                       '"query": {' +
              '              "value": "{0}"   ' +
              '        }' +
            '      }';

// 传入变量数组替换占位符
String body = String.format(bodyTemplate, new List<String>{variable1});

req.setBody(body);

方法3:推荐使用JSON序列化(避免手动拼接错误)

手动拼接JSON容易出现格式疏漏,推荐通过对象或Map构建结构后序列化:

方式3.1:使用内部类

// 定义与JSON结构匹配的内部类
public class QueryRequestBody {
    public QueryDetail query;
    public class QueryDetail {
        public String value;
    }
}

// 构建请求体对象
String variable1 = '1646149510';
QueryRequestBody reqBody = new QueryRequestBody();
reqBody.query = new QueryRequestBody.QueryDetail();
reqBody.query.value = variable1;

// 序列化为JSON字符串
String body = JSON.serialize(reqBody);
req.setBody(body);

方式3.2:使用Map

如果不想定义类,可以用Map快速构建结构:

String variable1 = '1646149510';
Map<String, Object> bodyMap = new Map<String, Object>{
    'query' => new Map<String, Object>{
        'value' => variable1
    }
};

String body = JSON.serialize(bodyMap);
req.setBody(body);

常见失败原因

你之前替换失败大概率是以下情况:

  • 没有给变量包裹JSON所需的双引号(转义后为&quot;),导致生成的JSON格式非法
  • 字符串拼接时符号错误(比如遗漏+号或引号),引发语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:32:19