JSON クラス
名前空間
使用方法
System.JSON クラスのメソッドを使用して、Apex オブジェクトの JSON のシリアライゼーションとデシリアライゼーションの往復処理を実行します。
JSON のメソッド
JSON のメソッドは次のとおりです。すべてのメソッドが静的です。
createGenerator(prettyPrint)
署名
public static System.JSONGenerator createGenerator(Boolean prettyPrint)
パラメーター
- prettyPrint
- 型: Boolean
- JSON ジェネレーターが、JSON コンテンツをインデントされた見栄えのよい印刷形式で作成するかどうかを指定します。インデントされたコンテンツを作成するには、true を設定します。
戻り値
createParser(jsonString)
署名
public static System.JSONParser createParser(String jsonString)
パラメーター
- jsonString
- 型: String
- 解析する JSON コンテンツです。
戻り値
deserialize(jsonString, apexType)
署名
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 コンテンツを解析します。
例
1Decimal n = (Decimal)JSON.deserialize(
2 '100.1', Decimal.class);
3System.assertEquals(n, 100.1);deserializeStrict(jsonString, apexType)
署名
public static Object deserializeStrict(String jsonString, System.Type apexType)
パラメーター
- jsonString
- 型: String
- デシリアライズする JSON コンテンツです。
- apexType
- 型: System.Type
- このメソッドが JSON コンテンツのデシリアライズ後に作成するオブジェクトの Apex 型です。
戻り値
型: Object
使用方法
例
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)
署名
public static Object deserializeUntyped(String jsonString)
パラメーター
- jsonString
- 型: String
- デシリアライズする JSON コンテンツです。
戻り値
型: Object
例
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)
署名
public static String serialize(Object objectToSerialize)
パラメーター
- objectToSerialize
- 型: Object
- シリアライズする Apex オブジェクトです。
戻り値
型: String
例
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)
署名
public static String serialize(Object objectToSerialize, Boolean suppressApexObjectNulls)
パラメーター
- objectToSerialize
- 型: Object
- シリアライズする Apex オブジェクトです。
- suppressApexObjectNulls
- 型: Boolean
- true の場合、JSON オブジェクトをシリアライズする前に null 値を削除します。
戻り値
型: String
使用方法
このメソッドを使用して、Apex オブジェクトを JSON コンテンツにシリアライズするときに null 値を抑制するかどうかを指定できます。
serializePretty(objectToSerialize)
署名
public static String serializePretty(Object objectToSerialize)
パラメーター
- objectToSerialize
- 型: Object
- シリアライズする Apex オブジェクトです。
戻り値
型: String