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
    评论
### 回答1: 在 Java 中,使用 Gson 库将 Map 对象换为 JSON 格式字符串时,null 值也会被换为字符串 "null"。你可以使用 Gson 库的 GsonBuilder 对象来配置 Gson 对象,使其在序列化时忽略 null 值。 首先,你需要在你的项目中导入 Gson 库。接下来,你需要创建一个 GsonBuilder 对象,然后使用 setSerializationInclusion() 方法来设置 Gson 应该如何处理 null 值。最后,你可以使用 create() 方法来创建一个 Gson 对象。你可以使用这个 Gson 对象来将 Map 对象换为 JSON 字符串。 下面是一个例子: ``` import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import java.util.Map; public class Main { public static void main(String[] args) { // 创建 GsonBuilder 对象 GsonBuilder builder = new GsonBuilder(); // 设置 Gson 应该如何处理 null 值 builder.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); // 创建 Gson 对象 Gson gson = builder.create(); // 定义 Map 对象 Map<String, Object> map = new HashMap<>(); map.put("key", "value"); map.put("null", null); // 将 Map 对象换为 JSON 字符串 String json = gson.toJson(map); System.out.println(json); } } ``` 输出结果应该是: ``` {"key":"value"} ``` 在这个例子中,Gson 对象会忽略 map 中的 null 值,因此最终得到的 JSON 字符串中不 ### 回答2: 在将Java中的Map对象换为JSON格式时,如果Map的值为nullJSON库默认会将其换为字符串"null"。如果我们想要将"null"字符串换为null值,可以通过以下几种方法实现: 1. 使用JSON库的配置选项:某些JSON库提供了配置选项来设置null值的换规则。例如,可以使用Jackson库的`JsonMapper`类中的`configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)`方法,将空字符串换为null值。 2. 使用JSON库的定制换器:某些JSON库允许我们自定义一个换器来处理将字符串"null"换为null值的逻辑。例如,使用Jackson库,我们可以创建一个自定义的`JsonDeserializer`来处理这个换。通过继承`JsonDeserializer`类,并在`deserialize`方法中判断字符串值为"null"时,返回null值。 3. 预先处理Map对象:在将Map对象换为JSON之前,可以事先遍历Map的值,将为null的值替换为一个特定的标记。例如,可以将null值替换为一个自定义的字符串,如"__null__",然后在将换后的JSON字符串再次解析时,将"__null__"字符串换为null值。 选择适合你项目需求和JSON库的方案,根据场景选择最合适的方法来将字符串"null"换为null值。 ### 回答3: 在Java中,当将Map对象换为JSON时,null值默认会被换成字符串"null"。如果你希望将"null"换成null值,可以使用一些JSON换库中的特定选项或自定义代码来实现。 以下是两种常见的解决方法: 1. 使用Jackson库:Jackson是一个功能强大的JSON处理库,你可以使用它来MapJSON,并将null换为JSONnull。 首先,确保你的项目中包含Jackson库的相关依赖。然后,可以按照以下示例代码执行换: ``` import com.fasterxml.jackson.databind.ObjectMapper; public class MapToJsonExample { public static void main(String[] args) throws Exception { // 创建一个Map对象 Map<String, Object> myMap = new HashMap<>(); myMap.put("key1", "value1"); myMap.put("key2", null); // 创建ObjectMapper对象 ObjectMapper mapper = new ObjectMapper(); // 将Map换为JSON字符串 String jsonString = mapper.writeValueAsString(myMap); // 输出JSON字符串 System.out.println(jsonString); } } ``` 以上代码将输出以下JSON字符串: ``` {"key1":"value1","key2":null} ``` 2. 自定义代码:如果你不想使用Jackson库,也可以使用字符串替换的方法将"null"替换为null。 以下是一个示例代码: ``` import java.util.HashMap; import java.util.Map; public class MapToJsonExample { public static void main(String[] args) { // 创建一个Map对象 Map<String, Object> myMap = new HashMap<>(); myMap.put("key1", "value1"); myMap.put("key2", null); // 将Map换为JSON字符串 String jsonString = mapToJsonString(myMap); // 输出JSON字符串 System.out.println(jsonString); } public static String mapToJsonString(Map<String, Object> map) { StringBuilder sb = new StringBuilder(); sb.append("{"); for (Map.Entry<String, Object> entry : map.entrySet()) { sb.append('"').append(entry.getKey()).append('"').append(":"); if (entry.getValue() == null) { sb.append("null"); } else { sb.append('"').append(entry.getValue().toString()).append('"'); } sb.append(","); } if (sb.length() > 1) { sb.setLength(sb.length() - 1); } sb.append("}"); return sb.toString(); } } ``` 以上代码也将输出同样的JSON字符串: ``` {"key1":"value1","key2":null} ``` 上述两种方法都可以将"null"换为null值。你可以根据自己的需求选择合适的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值