Apexクラス内でJSON文字列を作成するとき、JSONGenerator Classが便利です。これを利用することで長々と文字列連結処理を行うこと無くJSON文字列を作成できます。
使い方
はじめに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();
こんな感じの手順でJSON文字列を作成できます。
値が正しくセットされているかはテストクラス内でJSON.deserializeUntyped()をつかって確認できます。