Gson解析服务器返回json字符串 为null做处理

 话不多说,貌似我也话不多,毕竟是程序员 整天和电脑打交道 圈子又那么小 话少

由于google官方Gson没有对String 为null做处理

 

 

 开始转换

public class StringNullAdapter extends TypeAdapter {
    @Override
    public String read(JsonReader reader) throws IOException {
        if (reader.peek() == JsonToken.NULL) {
            reader.nextNull();
            return "";
        }
        return reader.nextString();
    }
    @Override
    public void write(JsonWriter writer, String value) throws IOException {
        if (value == null) {
            writer.nullValue();
            return;
        }
        writer.value(value);
    }
}

 对字符串类型做处理

public class NullStringEmptyTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    public  TypeAdapter create(Gson gson, TypeToken type) {
        Class rawType = (Class) type.getRawType();
        if (rawType != String.class) {
            return null;
        }
        return (TypeAdapter) new StringNullAdapter();
    }
}

用法

  Gson gson  = new GsonBuilder().registerTypeAdapterFactory(new NullStringEmptyTypeAdapterFactory()).create(); 

Gson解析服务器返回json字符串 为null做处理_第1张图片

你可能感兴趣的:(代码)