gpt4 book ai didi

java - 在使用 GSON 解析 JSON 时使用枚举

转载 作者:行者123 更新时间:2023-11-30 05:01:46 29 4
gpt4 key购买 nike

这与我之前在这里问过的一个问题有关

JSON parsing using Gson

我正在尝试解析相同的 JSON,但现在我稍微更改了我的类。

{
"lower": 20,
"upper": 40,
"delimiter": " ",
"scope": ["${title}"]
}

我的类(class)现在看起来像:

public class TruncateElement {

private int lower;
private int upper;
private String delimiter;
private List<AttributeScope> scope;

// getters and setters
}


public enum AttributeScope {

TITLE("${title}"),
DESCRIPTION("${description}"),

private String scope;

AttributeScope(String scope) {
this.scope = scope;
}

public String getScope() {
return this.scope;
}
}

这段代码抛出异常,

com.google.gson.JsonParseException: The JsonDeserializer EnumTypeAdapter failed to deserialized json object "${title}" given the type class com.amazon.seo.attribute.template.parse.data.AttributeScope
at

异常是可以理解的,因为根据我之前问题的解决方案,GSON 期望 Enum 对象实际上被创建为

${title}("${title}"),
${description}("${description}");

但由于这在语法上是不可能的,推荐的解决方案和解决方法是什么?

最佳答案

我想扩展一点 NAZIK/user2724653 的答案(针对我的情况)。这是一段 Java 代码:

public class Item {
@SerializedName("status")
private Status currentState = null;

// other fields, getters, setters, constructor and other code...

public enum Status {
@SerializedName("0")
BUY,
@SerializedName("1")
DOWNLOAD,
@SerializedName("2")
DOWNLOADING,
@SerializedName("3")
OPEN
}
}

在 json 文件中,您只有一个字段 "status": "N",,其中 N=0,1,2,3 - 取决于 Status 值。就是这样,GSON 可以很好地处理嵌套的 enum 类的值。在我的例子中,我从 json 数组中解析了一个 Items 列表:

List<Item> items = new Gson().<List<Item>>fromJson(json,
new TypeToken<List<Item>>(){}.getType());

关于java - 在使用 GSON 解析 JSON 时使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58129363/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com