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

Newer Version Available

This content describes an older version of this product. View Latest

JSONParser クラス

JSON 符号化されたコンテンツのパーサーを表します。

名前空間

System

使用方法

System.JSONParser メソッドを使用して、Web サービスコールアウトの JSON 符号化方式の応答など、コールから外部サービスに返される JSON 形式の応答を解析します。

JSONParser のメソッド

JSONParser のメソッドは次のとおりです。すべてインスタンスメソッドです。

clearCurrentToken()

現在のトークンを削除します。

署名

public Void clearCurrentToken()

戻り値

型: Void

使用方法

このメソッドがコールされた後は、hasCurrentToken へのコールは false を返し、getCurrentToken へのコールは null を返します。getLastClearedToken をコールして、クリアされたトークンを取得できます。

getBlobValue()

現在のトークンを BLOB 値として返します。

署名

public Blob getBlobValue()

戻り値

型: Blob

使用方法

現在のトークンは JSONToken.VALUE_STRING 型で Base64 で符号化されている必要があります。

getBooleanValue()

現在のトークンを boolean 値として返します。

署名

public Boolean getBooleanValue()

戻り値

型: Boolean

使用方法

現在のトークンは JSONToken.VALUE_TRUE 型または JSONToken.VALUE_FALSE 型である必要があります。

次の例では、サンプルの JSON 文字列を解析して boolean 値を取得します。
1String JSONContent =
2    '{"isActive":true}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the Boolean value.
10Boolean isActive = parser.getBooleanValue();

getCurrentName()

現在のトークンに関連付けられた名前を返します。

署名

public String getCurrentName()

戻り値

型: String

使用方法

現在のトークンが JSONToken.FIELD_NAME 型の場合、getText と同じ値を返します。現在のトークンが値の場合、このトークンより前にある項目名を返します。配列値やルートレベル値など他の値の場合は null を返します。

次の例では、サンプルの JSON 文字列を解析します。項目値まで処理を進めて、対応する項目名を取得します。

1String JSONContent = '{"firstName":"John"}';
2JSONParser parser = 
3   JSON.createParser(JSONContent);
4// Advance to the start object marker.
5parser.nextToken();
6// Advance to the next value.
7parser.nextValue();
8// Get the field name for the current value.
9String fieldName = parser.getCurrentName();
10// Get the textual representation 
11// of the value.
12String fieldValue = parser.getText();

getCurrentToken()

パーサーが現在指し示しているトークンを返します。現在のトークンがない場合は null を返します。

署名

public System.JSONToken getCurrentToken()

戻り値

型: System.JSONToken

使用方法

次の例では、サンプルの JSON 文字列内のすべてのトークンに対して繰り返し処理を行います。
1String JSONContent = '{"firstName":"John"}';
2JSONParser parser = 
3   JSON.createParser(JSONContent);
4// Advance to the next token.
5while (parser.nextToken() != null) {
6    System.debug('Current token: ' +
7        parser.getCurrentToken());
8}

getDatetimeValue()

現在のトークンを日時値として返します。

署名

public Datetime getDatetimeValue()

戻り値

型: Datetime

使用方法

現在のトークンは JSONToken.VALUE_STRING 型である必要があり、ISO-8601 形式の Datetime 値を表す必要があります。

次の例では、サンプルの JSON 文字列を解析して datetime 値を取得します。
1String JSONContent =
2'{"transactionDate":"2011-03-22T13:01:23"}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the transaction date.
10Datetime transactionDate = 
11   parser.getDatetimeValue();

getDateValue()

現在のトークンを日付値として返します。

署名

public Date getDateValue()

戻り値

型: Date

使用方法

現在のトークンは JSONToken.VALUE_STRING 型である必要があり、ISO-8601 形式の Date 値を表す必要があります。

次の例では、サンプルの JSON 文字列を解析して date 値を取得します。
1String JSONContent =
2   '{"dateOfBirth":"2011-03-22"}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the date of birth.
10Date dob = parser.getDateValue();

getDecimalValue()

現在のトークンを小数値として返します。

署名

public Decimal getDecimalValue()

戻り値

型: Decimal

使用方法

現在のトークンは JSONToken.VALUE_NUMBER_FLOAT 型または JSONToken.VALUE_NUMBER_INT 型である必要があり、Decimal 型の値に変換可能な数値です。

次の例では、サンプルの JSON 文字列を解析して小数値を取得します。
1String JSONContent =
2   '{"GPA":3.8}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the GPA score.
10Decimal gpa = parser.getDecimalValue();

getDoubleValue()

現在のトークンを double 値として返します。

署名

public Double getDoubleValue()

戻り値

型: Double

使用方法

現在のトークンは JSONToken.VALUE_NUMBER_FLOAT 型である必要があり、Double 型の値に変換可能な数値です。

次の例では、サンプルの JSON 文字列を解析して double 値を取得します。
1String JSONContent =
2   '{"GPA":3.8}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the GPA score.
10Double gpa = parser.getDoubleValue();

getIdValue()

現在のトークンを ID 値として返します。

署名

public ID getIdValue()

戻り値

型: ID

使用方法

現在のトークンは JSONToken.VALUE_STRING 型で、有効な ID である必要があります。

次の例では、サンプルの JSON 文字列を解析して ID 値を取得します。
1String JSONContent =
2   '{"recordId":"001R0000002nO6H"}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the record ID.
10ID recordID = parser.getIdValue();

getIntegerValue()

現在のトークンを整数値として返します。

署名

public Integer getIntegerValue()

戻り値

型: Integer

使用方法

現在のトークンは JSONToken.VALUE_NUMBER_INT 型で、Integer を表す必要があります。

次の例では、サンプルの JSON 文字列を解析して integer 値を取得します。
1String JSONContent =
2   '{"recordCount":10}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the record count.
10Integer count = parser.getIntegerValue();

getLastClearedToken()

clearCurrentToken メソッドによりクリアされた最後のトークンを返します。

署名

public System.JSONToken getLastClearedToken()

戻り値

型: System.JSONToken

getLongValue()

現在のトークンを long 値として返します。

署名

public Long getLongValue()

戻り値

型: Long

使用方法

現在のトークンは JSONToken.VALUE_NUMBER_INT 型である必要があり、Long 型の値に変換可能な数値です。

次の例では、サンプルの JSON 文字列を解析して long 値を取得します。
1String JSONContent =
2   '{"recordCount":2097531021}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the record count.
10Long count = parser.getLongValue();

getText()

現在のトークンのテキスト表現を返します。現在のトークンがない場合は null を返します。

署名

public String getText()

戻り値

型: String

使用方法

nextToken が一度もコールされていない場合、またはパーサーが入力ストリームの終了に達した場合は、現在のトークンは存在しないため null を返します。

getTimeValue()

現在のトークンを time 値として返します。

署名

public Time getTimeValue()

戻り値

型: Time

使用方法

現在のトークンは JSONToken.VALUE_STRING 型である必要があり、ISO-8601 形式�� Time 値を表す必要があります。

次の例では、サンプルの JSON 文字列を解析して datetime 値を取得します。
1String JSONContent =
2   '{"arrivalTime":"18:05"}';
3JSONParser parser = 
4   JSON.createParser(JSONContent);
5// Advance to the start object marker.
6parser.nextToken();
7// Advance to the next value.
8parser.nextValue();
9// Get the arrival time.
10Time arrivalTime = parser.getTimeValue();

hasCurrentToken()

現在パーサーが 1 つのトークンを指し示している場合は true を返します。指し示していない場合は false を返します。

署名

public Boolean hasCurrentToken()

戻り値

型: Boolean

nextToken()

次のトークンを返します。パーサーが入力ストリームの終了に達した場合は null を返します。

署名

public System.JSONToken nextToken()

戻り値

型: System.JSONToken

使用方法

ストリームの処理を先に進めて、次のトークン (存在する場合) の型を特定します。

nextValue()

値の型を示す次のトークンを返します。パーサーが入力ストリームの終了に達した場合は null を返します。

署名

public System.JSONToken nextValue()

戻り値

型: System.JSONToken

使用方法

ストリームの処理を先に進めて、JSON 配列、オブジェクトの開始マーク、終了マークなど、値の型を示す次のトークン (存在する場合) の型を特定します。

readValueAs(apexType)

JSON コンテンツを指定された Apex 型のオブジェクトにデシリアライズして、デシリアライズされたオブジェクトを返します。

署名

public Object readValueAs(System.Type apexType)

パラメーター

apexType
型: System.Type
apexType 引数は、このメソッドが現在の値をデシリアライズした後に返すオブジェクトの型を指定します。

戻り値

型: Object

使用方法

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

次の例では、サンプルの JSON 文字列を解析して datetime 値を取得します。このサンプルを実行するには、次のように Apex クラスを新規作成する必要があります。
1public class Person {
2    public String name;
3    public String phone;
4}
その後で、クラスメソッドに次のサンプルを挿入します。
1// JSON string that contains a Person object.
2String JSONContent =
3    '{"person":{' + 
4        '"name":"John Smith",' +
5        '"phone":"555-1212"}}';
6JSONParser parser = 
7   JSON.createParser(JSONContent);
8// Make calls to nextToken() 
9// to point to the second
10// start object marker.
11parser.nextToken();
12parser.nextToken();
13parser.nextToken();
14// Retrieve the Person object
15// from the JSON string.
16Person obj = 
17   (Person)parser.readValueAs(
18      Person.class);
19System.assertEquals(
20   obj.name, 'John Smith');
21System.assertEquals(
22   obj.phone, '555-1212');

readValueAsStrict(apexType)

JSON コンテンツを指定された Apex 型のオブジェクトにデシリアライズして、デシリアライズされたオブジェクトを返します。JSON コンテンツ内のすべての属性は、指定された型に存在する必要があります。

署名

public Object readValueAsStrict(System.Type apexType)

パラメーター

apexType
型: System.Type
apexType 引数は、このメソッドが現在の値をデシリアライズした後に返すオブジェクトの型を指定します。

戻り値

型: Object

使用方法

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

次の例では、サンプルの JSON 文字列を解析して datetime 値を取得します。このサンプルを実行するには、次のように Apex クラスを新規作成する必要があります。
1public class Person {
2    public String name;
3    public String phone;
4}
その後で、クラスメソッドに次のサンプルを挿入します。
1// JSON string that contains a Person object.
2String JSONContent =
3    '{"person":{' + 
4        '"name":"John Smith",' +
5        '"phone":"555-1212"}}';
6JSONParser parser = 
7   JSON.createParser(JSONContent);
8// Make calls to nextToken() 
9// to point to the second
10// start object marker.
11parser.nextToken();
12parser.nextToken();
13parser.nextToken();
14// Retrieve the Person object
15// from the JSON string.
16Person obj = 
17   (Person)parser.readValueAsStrict(
18      Person.class);
19System.assertEquals(
20   obj.name, 'John Smith');
21System.assertEquals(
22   obj.phone, '555-1212');

skipChildren()

パーサーが現在指し示している JSONToken.START_ARRAY 型と JSONToken.START_OBJECT 型のすべての子トークンをスキップします。

署名

public Void skipChildren()

戻り値

型: Void