Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算包含枚举值的json字符串?_Java_Json_Enums_Gson - Fatal编程技术网

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();