2017-11-09 10 views
0
public class MyClass{ 
    @SerializedName("hello") 
    private String hello; 

    @SerializedName("world") 
    private String world 

    @SerializedName("dynamic") 
    private String dynamic; 
} 

すべての動的*名前を変数dynamicに解析できるようにします。 例:Gson - 一般的なSerializedNameを取得

{ "ハロー": "こんにちは"、 "世界" "世界"、 "dynamic123": "QWERTY"}

{ "ハロー": "こんにちは"、 "世界" : "世界"、 "dynamic345": "asdfgh"}

{ "こんにちは": "こんにちは"、 "世界": "世界"、 "dynamic567": "zxcvbn"}

行う方法私はこれを達成する?

答えて

2

Deserilize

MyClass result = gson.fromJson(json, MyClass.class); 
をごMyClassのため

public class MyClassDeSerializer implements JsonDeserializer<MyClass> { 
    @Override 
    public MyClass deserialize(JsonElement jsonElement, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 
     MyClass myClass = new MyClass(); 

     for (Map.Entry<String, JsonElement> property : jsonElement.getAsJsonObject().entrySet()) { 
      if (property.getKey().contains("dynamic")) { 
       myClass.setDynamic(property.getValue().getAsString()); 
      } 
      else if (property.equals("hello")) { 
       myClass.setHello(property.getValue().getAsString()); 
      } 
      else if (property.getKey().equals("world")) { 
       myClass.setWorld(property.getValue().getAsString()); 
      } 
     } 
     return myClass; 
    } 
} 

をカスタムGson Deserilizerを作成し、このクラスに

Gson gson = new GsonBuilder().registerTypeAdapter(MyClass.class , new MyClassDeSerializer()).create(); 

を登録することにより、Gsonを作成します。

関連する問題