tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Apex JSONGeneratorの使い方

Apexクラス内でJSON文字列を作成するとき、JSONGenerator Classが便利です。これを利用することで長々と文字列連結処理を行うこと無くJSON文字列を作成できます。

f:id:tyoshikawa1106:20150416043829p:plain

使い方

はじめにJSON.createGenerator()でJSONGenerator変数を宣言します。

JSONGenerator gen = JSON.createGenerator(true);


writeStartObject()とwriteEndObject()で『{』と『}』を宣言できます。

// 『{』を出力
gen.writeStartObject();
// 『}』を出力
gen.writeEndObject();


あとはセットする変数と値を宣言していきます。各データ型に対応したメソッドが用意されているので非常に便利です。
(writeIdFieldなどにNULLの値をセットするとExceptionエラーが発生します。)

gen.writeStringField('Name', opportunity.Name);
gen.writeIdField('AccountId', opportunity.AccountId);
gen.writeBooleanField('IsPrivate', opportunity.IsPrivate);
gen.writeDateField('CloseDate', opportunity.CloseDate);
gen.writeNumberField('Amount', opportunity.Amount);


最後にgen.getAsString()でString文字列として変換できます。

String jsonStr = gen.getAsString();

f:id:tyoshikawa1106:20150414203458p:plain


こんな感じの手順でJSON文字列を作成できます。
f:id:tyoshikawa1106:20150416050546p:plain


値が正しくセットされているかはテストクラス内でJSON.deserializeUntyped()をつかって確認できます。
f:id:tyoshikawa1106:20150414203619p:plain

サンプルコード

デモ動画