Newer Version Available
シリアライゼーションとデシリアライゼーションの往復処理
JSON クラスのメソッドを使用して、JSON コンテンツのシリアライゼーションとデシリアライゼーションの往復処理を実行します。これらのメソッドを使用すると、オブジェクトを JSON 形式の文字列にシリアライズしたり、JSON 文字列をデシリアライズしてオブジェクトに戻したりすることができます。
例: 請求書リストのシリアライズとデシリアライズ
次の例では、InvoiceStatement オブジェクトのリストを作成して、リストをシリアライズします。次に、シリアライズされた JSON 文字列を使用してリストをデシリアライズし、元のリストに表示された請求書と同じ請求書が新しいリストに含まれることをサンプルで検証します。
JSON シリアライゼーションの考慮事項
serialize メソッドの動作は、保存された Apex コードの Salesforce API バージョンによって異なります。
- 追加項目セットのあるクエリ対象の sObject のシリアライゼーション
- Salesforce API バージョン 27.0 以前を使用して保存された Apex の場合、クエリ対象の sObject に追加項目セットがある場合、これらの項目は serialize メソッドによって返されるシリアライズされた JSON 文字列に含まれません。Salesforce API バージョン 28.0 以降を使用して保存された Apex で開始する場合は、シリアライズされる JSON 文字列に追加項目が含まれます。
- 次の例では、照会された後に項目が取引先責任者に追加され、その後取引先責任者がシリアライズされます。アサーションステートメントは、JSON 文字列に追加項目が含まれていることを検証します。このアサーションは、Salesforce API バージョン 28.0 以降を使用して保存された Apex に対して有効です。
- 集計クエリの結果項目のシリアライゼーション
- Salesforce API バージョン 27.0 を使用して保存された Apex の場合、serialize メソッドを使用してシリアライズすると、集計クエリの結果に SELECT ステートメントの項目は含まれません。API の以前のバージョン、または API バージョン 28.0 以降の場合、シリアライズされた集計クエリの結果に SELECT ステートメントのすべての項目が含まれます。
- この集計クエリは、2 つの項目 (ID 項目の数と取引先名) を返します。
- 空の項目のシリアライゼーション
- API バージョン 28.0 以降はそれまでのバージョンとは異なり、null 項目はシリアライズされず、JSON 文字列には含まれません。この変更は、Json.deserialize() などの JSON メソッドを使用した JSON 文字列のデシリアライズには影響しません。JSON 文字列を調べるときにこの変更の影響が顕著に現れます。次に例を示します。
- ID のシリアライゼーション
- API バージョン 34.0 以前では、JSON のシリアライゼーションとデシリアライゼーションの往復処理後の ID に対する == を使用した ID の比較は失敗します。
JSON のデシリアライゼーションに関する考慮事項
項目に名前がないため、集計結果からの JSON をデシリアライズして Apex AggregateResult オブジェクトに戻すことはできません。