gpt4 book ai didi

java - 将 int 转换为 boolean 值

转载 作者:IT老高 更新时间:2023-10-28 12:55:12 26 4
gpt4 key购买 nike

有没有办法可以将 int/short 值转换为 boolean 值?我收到的 JSON 格式如下:

{ is_user: "0", is_guest: "0" }

我正在尝试将其序列化为如下所示的类型:

class UserInfo {

@SerializedName("is_user")
private boolean isUser;

@SerializedName("is_guest")
private boolean isGuest;

/* ... */
}

如何让 Gson 将这些 int/short 字段转换为 boolean 值?

最佳答案

首先获取 Gson 2.2.2 或更高版本。早期版本(包括 2.2)不支持原始类型的类型适配器。接下来,编写一个将整数转换为 boolean 值的类型适配器:

private static final TypeAdapter<Boolean> booleanAsIntAdapter = new TypeAdapter<Boolean>() {
@Override public void write(JsonWriter out, Boolean value) throws IOException {
if (value == null) {
out.nullValue();
} else {
out.value(value);
}
}
@Override public Boolean read(JsonReader in) throws IOException {
JsonToken peek = in.peek();
switch (peek) {
case BOOLEAN:
return in.nextBoolean();
case NULL:
in.nextNull();
return null;
case NUMBER:
return in.nextInt() != 0;
case STRING:
return Boolean.parseBoolean(in.nextString());
default:
throw new IllegalStateException("Expected BOOLEAN or NUMBER but was " + peek);
}
}
};

...然后使用此代码创建 Gson 实例:

  Gson gson = new GsonBuilder()
.registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
.create();

关于java - 将 int 转换为 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399079/

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