JSON 文字列を GSON 提供の JsonObject クラスに解析したら (意味のあるデータ オブジェクトに解析したくないが、厳密には JsonObject を使用したいと仮定します)、どのようにフィールド/値を変更できますか?直接キー?
役立つ API が見つかりません。
https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonObject.html
JSON 文字列を GSON 提供の JsonObject クラスに解析したら (意味のあるデータ オブジェクトに解析したくないが、厳密には JsonObject を使用したいと仮定します)、どのようにフィールド/値を変更できますか?直接キー?
役立つ API が見つかりません。
https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonObject.html
奇妙なことに、答えはプロパティを追加し続けることです。私は方法を半分期待していましたsetter
。:S
System.out.println("Before: " + obj.get("DebugLogId")); // original "02352"
obj.addProperty("DebugLogId", "YYY");
System.out.println("After: " + obj.get("DebugLogId")); // now "YYY"
これは、を使用して childkey 値を変更する場合に機能しJSONObject
ます。インポート使用は
import org.json.JSONObject;
ex json:(入力として与えながらjsonファイルを文字列に変換します)
{
"parentkey1": "name",
"parentkey2": {
"childkey": "test"
},
}
コード
JSONObject jObject = new JSONObject(String jsoninputfileasstring);
jObject.getJSONObject("parentkey2").put("childkey","data1");
System.out.println(jObject);
出力:
{
"parentkey1": "name",
"parentkey2": {
"childkey": "data1"
},
}
Gson ライブラリの 2.3 バージョン以降、JsonArray クラスには「set」メソッドがあります。
簡単な例を次に示します。
JsonArray array = new JsonArray();
array.add(new JsonPrimitive("Red"));
array.add(new JsonPrimitive("Green"));
array.add(new JsonPrimitive("Blue"));
array.remove(2);
array.set(0, new JsonPrimitive("Yelow"));
別のアプローチは、にデシリアライズしてから、必要に応じjava.util.Map
て JavaMap
を変更することです。これにより、Java 側のデータ処理がデータ トランスポート メカニズム (JSON) から分離されます。これは、私がコードを整理するのに好んで使用する方法です。代替データ構造としてではなく、データ トランスポートに JSON を使用します。