public class MyClass{
@SerializedName("hello")
private String hello;
@SerializedName("world")
private String world
@SerializedName("dynamic")
private String dynamic;
}
我希望能够将所有动态*名称解析为变量dynamic。 例如:
{“你好”:“你好”,“世界”:“世界”,“dynamic123”:“qwerty”}
{“你好”:“你好”,“世界”:“世界”,“dynamic345”:“asdfgh”}
{“你好”:“你好”,“世界”:“世界”,“dynamic567”:“zxcvbn”}
我如何实现这一目标?
答案 0 :(得分:2)
为MyClass创建自定义Gson Deserilizer
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;
}
}
通过注册此类
创建GsonGson gson = new GsonBuilder().registerTypeAdapter(MyClass.class , new MyClassDeSerializer()).create();
Deserilize
MyClass result = gson.fromJson(json, MyClass.class);