相关疑难解决方法(0)

是什么导致javac发出"使用未经检查或不安全的操作"警告

例如:

javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)

java generics warnings

267
推荐指数
7
解决办法
37万
查看次数

你如何让GSON省略空或空对象并清空数组和列表?

我正在使用Gson,我处于一种必须缩小某些Json字符串大小的情况.我想通过让它不将空对象,空值和空列表和数组放入Json字符串来实现.

有一种直截了当的方法吗?

让我澄清一点:我希望所有内容:emptyProp:{}或emptyArray:[]被跳过.我希望任何只包含空属性的对象被跳过.

java json gson

17
推荐指数
1
解决办法
2万
查看次数

为什么Kotlin数据类在Gson的非可空字段中可以有空值?

在Kotlin你可以创建一个data class:

data class CountriesResponse(
    val count: Int,
    val countries: List<Country>,
    val error: String)
Run Code Online (Sandbox Code Playgroud)

然后您可以使用它来解析JSON,例如"{n:10}".在这种情况下,你将有一个对象val countries: CountriesResponse,从收到的Retrofit,FuelGson包含这些值:count = 0, countries = null, error = null.

Kotlin + Gson中 - 如何在数据类为null时获取emptyList,您可以看到另一个示例.

当您稍后尝试使用时countries,您将在此处获得异常val size = countries.countries.size::"kotlin.TypeCastException:null不能转换为非null类型kotlin.Int".如果您编写代码并?在访问这些字段时使用,Android Studio将突出显示?.并警告:Unnecessary safe call on a non-null receiver of type List<Country>.

那么,我们应该?在数据类中使用吗?为什么应用程序null在运行时设置为不可为空的变量?

android nullpointerexception gson kotlin

10
推荐指数
2
解决办法
1375
查看次数

GSON为特定字段将整数值动态转换为布尔值

如何处理获取同名但类型不同的字段?我在同一个请求中从 API 有时得到整数值有时是布尔值。我想知道当我得到这样的 Json 时如何处理。我创建了类型适配器但它不起作用

我想过创建不同的 POJO 类。但是这个问题不仅仅针对一个请求。由于这个原因,我不喜欢创建 POJO。顺便说一句,我看到了类似的问题,但它并没有解决我的问题。

{
  "name" : "john doe",
  "isValid" : true 
}
Run Code Online (Sandbox Code Playgroud)

有时我得到 int

{
  "name" : "john doe",
  "isValid" : 1 
}
Run Code Online (Sandbox Code Playgroud)

获取整数时出现意外的 json 异常

class XModel{
    private boolean isValid;
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想为每个请求返回一个布尔值。有谁知道如何解决这个问题?

编辑:我想通过类型适配器阻止 instanceOf 关键字


解决方案:@Micha?Ziober 的回应对我有用。

class BooleanJsonDeserializer implements JsonDeserializer<Boolean> {

    private final Set<String> TRUE_STRINGS = new HashSet<>(Arrays.asList("true", "1", "yes"));

    @Override
    public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        System.out.println(json);
        JsonPrimitive jsonPrimitive = json.getAsJsonPrimitive();
        if (jsonPrimitive.isBoolean()) { …
Run Code Online (Sandbox Code Playgroud)

java serialization android json gson

5
推荐指数
1
解决办法
1338
查看次数