如何评估包含枚举值的json字符串?

时间:2019-07-19 02:20:29

标签: 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;
}

并使用

gson.fromJson(json, Blah.class)

,但它只是将字段设置为null。反正有这样做吗?不幸的是,我无法控制json字符串的格式,因此我必须按原样对其进行解析。

2 个答案:

答案 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\"}"