gson转对象变成null_Gson 转化Map为JsonString的时候 如果把null 转化成 ""

[可以使用jackson json工具类public class ObjectMappingTest {

public ObjectMapper test() {

StdSerializerProvider sp = new StdSerializerProvider();

sp.setNullValueSerializer(new JsonSerializer(){

@Override

public void serialize(Object arg0, JsonGenerator arg1,

SerializerProvider arg2) throws IOException,

JsonProcessingException {

arg1.writeString("");//null 序列化为 ""

}});

ObjectMapper m = new ObjectMapper();

m.setSerializerProvider(sp);

return m;

}

public static void main(String[] args) {

ObjectMappingTest ob = new ObjectMappingTest();

ObjectMapper o = ob.test();

Map map = new HashMap();

map.put("111", "ddd");

map.put("222", null);

map.put("333", null);

Person p = new Person(null,23l);

try {

System.out.println(o.writeValueAsString(map));//null ===>> ""

System.out.println(o.writeValueAsString(p));//去除属性为null的信息

} catch (JsonGenerationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (JsonMappingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)//这个注释是用来去除值为null的元素

public class Person {

public Person(String name, Long age) {

super();

this.name = name;

this.age = age;

}

private java.lang.String name;

private java.lang.Long age;

public java.lang.String getName() {

return name;

}

public void setName(java.lang.String name) {

this.name = name;

}

public java.lang.Long getAge() {

return age;

}

public void setAge(java.lang.Long age) {

this.age = age;

}

}

main方法输出结果:

{"222":"","111":"ddd","333":""}

{"age":23}

person类不加注释结果为:

{"name":"","age":23}

2014年3月17日 18:22

30

0

0

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值