@Tim Mac の応答は正しいですが、クラスのカスタム デシリアライザーを作成することで、よりエレガントにすることができます。MyEntity
次のようになります。
private class MyEntityDeserializer implements JsonDeserializer<MyEntity> {
public MyEntity deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
JsonObject rootObj = json.getAsJsonObject();
String nid = rootObj
.get("nid")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("value")
.getAsString();
String uuid = rootObj
.get("uuid")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("value")
.getAsString();
MyEntity entity = new MyEntity(nid, uuid);
return entity;
}
}
次に、次のように登録する必要がありますTypeAdapter
。
Gson gson = new GsonBuilder().registerTypeAdapter(MyEntity.class, new MyEntityDeserializer()).create();
最後に、JSON をいつものように解析する必要があります。
MyEntity entity = gson.fromJson(yourJsonString, MyEntity.class);
Gson は、カスタム デシリアライザーを自動的に使用して、JSON をMyEntity
クラスに解析します。