ApexでJSON.serializeした時のデータ型ごとの出力形式まとめ #salesforce

Apexでオブジェクト(SObject)を JSON.serialize した時に、データ型ごとの出力形式がどうなるのか、確認しました。

どこかにまとまっているのかもしれませんが…。

データ型が()付きのものは標準項目、それ以外はカスタム項目です。

データ型 出力時のフィールド名 出力形式 備考
(ID) Id string
(Name) Name string
(作成者) CreatedById string Salesforce ID
(作成日時) CreatedDate string ※1
(最終更新者) LastModifiedById string Salesforce ID
(最終更新日時) LastModifiedDate string ※1
(最終閲覧日時) LastViewedDate string ※1
(最終参照日時) LastReferencedDate string ※1
自動採番 {FieldName}__c string
数式 {FieldName}__c (戻り値のデータ型)
参照関係 {FieldName}__c string 参照先のID
主従関係 {FieldName}__c string 参照先のID
URL {FieldName}__c string
チェックボックス {FieldName}__c boolean
テキスト {FieldName}__c string
テキスト(暗号化) {FieldName}__c string マスク済み
テキストエリア {FieldName}__c string \r\n で改行
パーセント {FieldName}__c number
メール {FieldName}__c string
テキストエリア(リッチ) {FieldName}__c string raw HTML
\n で改行
ロングテキストエリア {FieldName}__c string \r\n で改行
数値 {FieldName}__c number
選択リスト {FieldName}__c string
選択リスト(複数選択) {FieldName}__c string 区切り文字は ;
地理位置情報 {FieldName}__c object {
“latitude”: {緯度},
“longitude”: {経度}
}
{FieldName}__Latitude__s number 緯度
{FieldName}__Longitude__s number 経度
通貨 {FieldName}__c number
電話 {FieldName}__c string
日付 {FieldName}__c string ※2
日付/時間 {FieldName}__c string ※1

※1 日時(日付+時間)の場合、YYYY-MM-DDThh:mm:ss.SSS+0000 のフォーマットです(例: 2017-01-28T16:17:31.000+0000

※2 日付の場合、YYYY-MM-DD のフォーマットです。

というわけで、基本的には違和感のない出力形式となっていました。留意するのは地理位置情報型、選択リスト(複数選択)、テキストエリアの改行コードくらいですかね。

ちなみに、カスタムオブジェクトの型情報は attributes 項目の type 項目として取得できます。

  "attributes": {
    "type": "Sample__c",
    "url": "/services/data/v38.0/sobjects/Sample__c/a0D2800000xxxxxXXX"
  }