我有一个看起来像这样的枚举
public enum Example {
EXAMPLE_1,
EXAMPLE_2,
EXAMPLE_3,
}
我正在尝试解析这样的json字符串:
String json = "{\"blah\": \"Example.EXAMPLE_1\"}"
我尝试过定义这样的类:
public class Blah {
Example blah;
}
并使用
gson.fromJson(json, Blah.class)
,但它只是将字段设置为null。反正有这样做吗?不幸的是,我无法控制json字符串的格式,因此我必须按原样对其进行解析。
答案 0 :(得分:1)
默认gson将解析没有类名的枚举字段。您可以为Example枚举自定义自己的json解串器。
JsonDeserializer<?> jd = new JsonDeserializer<Example>() {
@Override
public Example deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
String enumStr = json.getAsString();
String enumVal = enumStr.split("\\."); // etc...
Example val = ... ...
//...
return val;
}
};
Gson gson = new GsonBuilder().registerTypeAdapter(Example.class, jd).create();
答案 1 :(得分:0)
尝试这个json
String json = "{\"blah\": \"EXAMPLE_1\"}"