JavaのJsonObjectに値を追加しようと思った時に、追加方法を調べたのでメモしておきます。
ここでは、org.json.JSONObjectを使います。
そもそもJavaでJsonを使う方法が分からない方はこちらの記事を参考にしてください。
JsonObject.putメソッドで値を追加しよう
値の追加は簡単にできます。以下のようにputメソッドで追加できます。
JsonObject.put("key","value");
サンプルコードはこちら。
30歳の山田太郎さんのJsonObjectに、出身地:東京を追加します。
import org.json.JSONObject; public class JsonObjectAddKeyValue { public static void main(String[] args){ String jsonStr = "{'名前':'山田太郎','年齢':'30'}"; JSONObject jso = new JSONObject(jsonStr); System.out.println("-----------追加前----------"); System.out.println(jso.toString()); // JsonObject.put("key","value"); で値を追加できます jso.put("出身地","東京"); System.out.println("-----------追加後----------"); System.out.println(jso.toString()); } }
実際に動かしてみると、以下のようになります。
-----------追加前---------- {"年齢":"30","名前":"山田太郎"} -----------追加後---------- {"年齢":"30","名前":"山田太郎","出身地":"東京"}
とっても簡単でしょ?
【応用編】JsonArrayからJsonObjectを取り出して値を追加する方法
このままだと簡単すぎなので、応用編。
JsonObjectの配列「JsonArray」から、JsonObjectを取り出して値を追加してみます。
やり方は、jsonArray.getJsonObject(key)で、JsonObjectを取得。
取得したJsonObjectにputで値を追加します。
以下にサンプルコードを載せます。
import org.json.JSONArray; public class JsonObjectAddKeyValue { public static void main(String[] args){ String jsonArrStr = "[" + "{'名前':'山田太郎','年齢':'30'}," + "{'名前':'佐藤二朗','年齢':'20'}," + "]"; JSONArray jsonArr = new JSONArray(jsonArrStr); System.out.println("-----------追加前----------"); System.out.println(jsonArr.toString()); // jsonArrayの中のJsonObjectを一つずつ取り出して値を追加します for(int i=0; i<jsonArr.length(); i++){ // JsonObject.put("key","value"); で値を追加できます jsonArr.getJSONObject(i).put("出身地","東京"); } System.out.println("-----------追加後----------"); System.out.println(jsonArr.toString()); } }
これを動かすとこんな風になります。
-----------追加前---------- [{"年齢":"30","名前":"山田太郎"},{"年齢":"20","名前":"佐藤二朗"}] -----------追加後---------- [{"年齢":"30","名前":"山田太郎","出身地":"東京"},{"年齢":"20","名前":"佐藤二朗","出身地":"東京"}] 値(出身地:東京)が追加されていますね。
こんな風に、forループやJsonArrayと合わせると、より実践的なコードになりますよ。