Java 如何计算包含枚举值的json字符串?
我有一个枚举,看起来像这样Java 如何计算包含枚举值的json字符串?,java,json,enums,gson,Java,Json,Enums,Gson,我有一个枚举,看起来像这样 public enum Example { EXAMPLE_1, EXAMPLE_2, EXAMPLE_3, } 我正在尝试解析一个json字符串,如下所示: String json = "{\"blah\": \"Example.EXAMPLE_1\"}" public class Blah { Example blah; } 我曾经尝试过这样定义一个类: String json = "{\"blah\": \"Example.
public enum Example {
EXAMPLE_1,
EXAMPLE_2,
EXAMPLE_3,
}
我正在尝试解析一个json字符串,如下所示:
String json = "{\"blah\": \"Example.EXAMPLE_1\"}"
public class Blah {
Example blah;
}
我曾经尝试过这样定义一个类:
String json = "{\"blah\": \"Example.EXAMPLE_1\"}"
public class Blah {
Example blah;
}
和使用
gson.fromJson(json, Blah.class)
但它只是将字段设置为null。有什么办法可以这样做吗?不幸的是,我无法控制json字符串的格式,所以我必须按原样解析它。试试这个json
String json = "{\"blah\": \"EXAMPLE_1\"}"
默认gson将解析没有类名的枚举字段。您可以自定义自己的json反序列化程序,例如enum
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();
JsonDeserializer jd=新的JsonDeserializer(){
@凌驾
公共示例反序列化(JsonElement json,类型typeOfT,JsonDeserializationContext)引发JsonParseException{
字符串enumStr=json.getAsString();
字符串enumVal=enumStr.split(“\\”);//等。。。
示例val=。。。
//...
返回val;
}
};
Gson Gson=new GsonBuilder().registerTypeAdapter(Example.class,jd).create();