课程章节介绍
大家好,今天我们来聊聊 Apex 里一个非常方便的类——JSONGenerator。很多时候我们需要在代码里生成 JSON 数据,比如要传给外部系统,或者构造一个响应。如果手动拼接字符串,很容易出错,而且代码不美观。JSONGenerator 就提供了很优雅的增量式构建方式。
首先,我们怎么创建它呢?就是用 JSON.createGenerator,后面可以传一个布尔参数 true。这个 true 的作用是开启“漂亮打印”,让生成的 JSON 自动带缩进和换行,阅读起来特别清晰。如果传 false 或者不传,那就是紧凑格式。创建好以后,我们就可以一步步往里写内容了。
写入的时候,就像在搭积木:用一个 writeStartObject 表示一个大括号开始,这是对象的边界;写完里面的内容后,再用 writeEndObject 把这个对象关上。如果字段名需要写,就用 writeFieldName 指定名字。然后,我们可以用一系列类型化的写方法,比如 writeNumberField、writeStringField、writeBooleanField,甚至是 writeNullField,这些方法直接接收字段名和值,一步到位,省得你先写字段名再写值。还有一个 writeObjectField,可以把你一个字段名和一个 Apex 对象一起传进去,它会自动把对象序列化放到这个字段下面。
那如果要写整个 Apex 对象呢?还有一个更厉害的方法叫 writeObject,直接把一个 Apex 实例传给它,它就会把对象的所有可序列化属性展开成一个 JSON 对象,嵌套在当前位置。这对于把 Salesforce 记录输出成 JSON 特别便捷。
最后,等全部内容写入完毕,调用 getAsString 方法,就能拿到完整的 JSON 字符串了。
为了让你更直观地理解,我描述一下我们课堂上演示的例子:我们构建了一个嵌套的 JSON 结构,里面有一个人的基本信息,比如姓名和年龄;然后有一个地址,这是一个嵌套对象,包含了城市和街道;还有一个爱好列表,是一个数组,里面放了几项字符串;最精彩的是,我们还直接序列化了一个自定义 Apex 对象,比如一个 Account 记录,它被整个放到了 “account” 字段下面。所有这些内容,都集中在一个 JSON 结构里,清晰得很。通过这个例子,你就能看到 JSONGenerator 处理复杂层级是多么游刃有余。
总结一下,JSONGenerator 就是用增量、类型安全的方式来生成 JSON,避免手动拼接,支持嵌套对象、数组,以及任何 Apex 对象的直接序列化。希望今天的讲解能帮你轻松上手,以后构建 JSON 就用它吧。
关键词
Apex
Salesforce
Developer Guide