この文章は 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 値を削除します。

戻り値

型: 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 値を削除します。

戻り値

型: String