document.write("");

Gson toJson 忽略 long 为 0的数据

起因于数据id过大,所以将对应int , Integer都修改为long,

测试过程中发现 Gson toJson时,字段将int为0的数据忽略,但long 没有,

所以

1. 新增适配器

import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

import java.io.IOException;

public class LongIgnoreZeroAdapter extends TypeAdapter<Long> {
    
    @Override
    public void write(JsonWriter jsonWriter, Long aLong) throws IOException {
        if (aLong == null || aLong.equals(0l)) {
            jsonWriter.nullValue();
            return;
        }

        jsonWriter.value(aLong.longValue());
    }

    @Override
    public Long read(JsonReader jsonReader) throws IOException {
        if (jsonReader.peek() == JsonToken.NULL) {
            jsonReader.nextNull();
            return 0l;
        }
        return jsonReader.nextLong();
    }
}

  

 

2. 在对应类中字段上方新增注解  @JsonAdapter(LongIgnoreZeroAdapter.class)

import com.xxx.xxxx.adapter.LongIgnoreZeroAdapter;
import com.google.gson.annotations.JsonAdapter;

public class XXXBean {

    @JsonAdapter(LongIgnoreZeroAdapter.class)
    private long xx1;
    private String xx2;

    

    public XXXBean(long xx1, String xx2) {
        this.xx1 = xx1;
        this.xx2 = xx2;
    } 


}

  

3. 正常toJson 

new Gson().toJson(new XXXBean(xxx,xxx,xxx))

  

 03/09

 更新一下,应该为longValue,之前写错为intValue了

  

longValue
posted @ 2023-02-07 15:46  人间春风意  阅读(52)  评论(0编辑  收藏  举报