この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

JSON クラス

Apex オブジェクトを JSON 形式でシリアライズするメソッドと、このクラスの serialize メソッドを使用して、シリアライズされた JSON コンテンツをデシリアライズするメソッドがあります。

名前空間

System

使用方法

System.JSON クラスのメソッドを使用して、Apex オブジェクトの JSON のシリアライゼーションとデシリアライゼーションの往復処理を実行します。

JSON のメソッド

JSON のメソッドは次のとおりです。すべてのメソッドが静的です。

createGenerator(prettyPrint)

新しい JSON ジェネレーターを返します。

署名

public static System.JSONGenerator createGenerator(Boolean prettyPrint)

パラメーター

prettyPrint
型: Boolean
JSON ジェネレーターが、JSON コンテンツをインデントされた見栄えのよい印刷形式で作成するかどうかを指定します。インデントされたコンテンツを作成するには、true を設定します。

戻り値

型: System.JSONGenerator

createParser(jsonString)

新しい JSON パーサーを返します。

署名

public static System.JSONParser createParser(String jsonString)

パラメーター

jsonString
型: String
解析する JSON コンテンツです。

戻り値

型: System.JSONParser

deserialize(jsonString, apexType)

指定された JSON 文字列を Apex オブジェクトの指定された型にデシリアライズします。

署名

public static Object deserialize(String jsonString, System.Type apexType)

パラメーター

jsonString
型: String
デシリアライズする JSON コンテンツです。
apexType
型: System.Type
このメソッドが JSON コンテンツのデシリアライズ後に作成するオブジェクトの Apex 型です。

戻り値

型: Object

使用方法

JSON コンテンツに、System.Type 引数に存在しない属性 (存在しない項目やオブジェクトなど) が含まれている場合、一定の状況でデシリアライゼーションに失敗します。Salesforce API バージョン 34.0 以前を使用して JSON コンテンツをカスタムオブジェクトまたは sObject にデシリアライズすると、無関係な属性が渡されたときにこのメソッドが実行時例外を発生させます。JSON コンテンツを API の全バージョンの Apex クラスまたは API バージョン 35.0 以降のオブジェクトにデシリアライズしたときは、例外が発生しません。例外が発生しない場合、このメソッドは無関係な属性を無視して、残りの JSON コンテンツを解析します。

次の例では、Decimal 値をデシリアライズします。
1Decimal n = (Decimal)JSON.deserialize(
2               '100.1', Decimal.class);
3System.assertEquals(n, 100.1);

deserializeStrict(jsonString, apexType)

指定された JSON 文字列を Apex オブジェクトの指定された型にデシリアライズします。

署名

public static Object deserializeStrict(String jsonString, System.Type apexType)

パラメーター

jsonString
型: String
デシリアライズする JSON コンテンツです。
apexType
型: System.Type
このメソッドが JSON コンテンツのデシリアライズ後に作成するオブジェクトの Apex 型です。

戻り値

型: Object

使用方法

JSON 文字列内のすべての属性は、指定された型に存在する必要があります。JSON コンテンツに、System.Type 引数に存在しない属性 (存在しない項目やオブジェクトなど) が含まれている場合、一定の状況でデシリアライゼーションに失敗します。無関係な属性のある JSON コンテンツを Apex クラスにデシリアライズすると、API のどのバージョンでもこのメソッドが例外を発生させます。ただし、このメソッドを使用して JSON コンテンツをカスタムオブジェクトまたは sObject にデシリアライズする場合は、例外が発生しません。

次の例は、JSON 文字列を Car クラスで表されるユーザー定義型のオブジェクト (この例で定義) にデシリアライズします。
1public class Car {
2    public String make;
3    public String year;
4}
5
6public void parse() {        
7    Car c = (Car)JSON.deserializeStrict(
8        '{"make":"SFDC","year":"2020"}',
9        Car.class);
10    System.assertEquals(c.make, 'SFDC');
11    System.assertEquals(c.year, '2020');
12}

deserializeUntyped(jsonString)

指定された JSON 文字列をプリミティブデータ型のコレクションにデシリアライズします。

署名

public static Object deserializeUntyped(String jsonString)

パラメーター

jsonString
型: String
デシリアライズする JSON コンテンツです。

戻り値

型: Object

次の例では、アプライアンスオブジェクトの JSON 表現を、プリミティブデータ型が含まれるマップと、さらにプリミティブ型のコレクションにデシリアライズします。その後、デシリアライズされた値を検証します。
1String jsonInput = '{\n' +
2    ' "description" :"An appliance",\n' +
3    ' "accessories" : [ "powerCord", ' + 
4      '{ "right":"door handle1", ' + 
5        '"left":"door handle2" } ],\n' +
6    ' "dimensions" : ' + 
7      '{ "height" : 5.5 , ' + 
8        '"width" : 3.0 , ' + 
9        '"depth" : 2.2 },\n' +
10    ' "type" : null,\n' +
11    ' "inventory" : 2000,\n' +
12    ' "price" : 1023.45,\n' +
13    ' "isShipped" : true,\n' +
14    ' "modelNumber" : "123"\n' +
15    '}';
16    
17Map<String, Object> m = 
18   (Map<String, Object>)
19      JSON.deserializeUntyped(jsonInput);
20
21System.assertEquals(
22   'An appliance', m.get('description'));
23        
24List<Object> a = 
25   (List<Object>)m.get('accessories');
26System.assertEquals('powerCord', a[0]);        
27Map<String, Object> a2 = 
28   (Map<String, Object>)a[1];
29System.assertEquals(
30   'door handle1', a2.get('right'));
31System.assertEquals(
32   'door handle2', a2.get('left'));
33
34Map<String, Object> dim = 
35   (Map<String, Object>)m.get('dimensions');
36System.assertEquals(
37   5.5, dim.get('height'));
38System.assertEquals(
39   3.0, dim.get('width'));
40System.assertEquals(
41   2.2, dim.get('depth'));
42        
43System.assertEquals(null, m.get('type'));
44System.assertEquals(
45   2000, m.get('inventory'));
46System.assertEquals(
47   1023.45, m.get('price'));
48System.assertEquals(
49   true, m.get('isShipped'));
50System.assertEquals(
51   '123', m.get('modelNumber'));

serialize(objectToSerialize)

Apex オブジェクトを JSON コンテンツにシリアライズします。

署名

public static String serialize(Object objectToSerialize)

パラメーター

objectToSerialize
型: Object
シリアライズする Apex オブジェクトです。

戻り値

型: String

次の例では、新しい Datetime 値をシリアライズします。
1Datetime dt = Datetime.newInstance(
2               Date.newInstance(
3                  2011, 3, 22),
4               Time.newInstance(
5                  1, 15, 18, 0)); 
6    String str = JSON.serialize(dt); 
7    System.assertEquals(
8       '"2011-03-22T08:15:18.000Z"',
9       str);

serialize(objectToSerialize, suppressApexObjectNulls)

Apex オブジェクトを JSON コンテンツにシリアライズするときに null 値を抑制します。

署名

public static String serialize(Object objectToSerialize, Boolean suppressApexObjectNulls)

パラメーター

objectToSerialize
型: Object
シリアライズする Apex オブジェクトです。
suppressApexObjectNulls
型: Boolean
true の場合、JSON オブジェクトをシリアライズする前に null 値を削除します。

このパラメーターは、SOQL で取得された sObject には適用されません。

メモ

戻り値

型: String

使用方法

このメソッドを使用して、Apex オブジェクトを JSON コンテンツにシリアライズするときに null 値を抑制するかどうかを指定できます。

serializePretty(objectToSerialize)

Apex オブジェクトを JSON コンテンツにシリアライズし、見栄えのよい印刷形式を使用してインデントされたコンテンツを生成します。

署名

public static String serializePretty(Object objectToSerialize)

パラメーター

objectToSerialize
型: Object
シリアライズする Apex オブジェクトです。

戻り値

型: String

serializePretty(objectToSerialize, suppressApexObjectNulls)

Apex オブジェクトを JSON コンテンツにシリアライズするときに null 値を抑制し、見栄えのよい印刷形式を使用してインデントされたコンテンツを生成します。

署名

public static String serializePretty(Object objectToSerialize, Boolean suppressApexObjectNulls)

パラメーター

objectToSerialize
型: Object
シリアライズする Apex オブジェクトです。
suppressApexObjectNulls
型: Boolean
true の場合、JSON オブジェクトをシリアライズする前に null 値を削除します。

このパラメーターは、SOQL で取得された sObject には適用されません。

メモ

戻り値

型: String