bean转json时null字段不转换的方法

原文地址:https://blog.csdn.net/lom9357bye/article/details/61926037

1.使用GSON时,默认不对null字段进行转换,而ObjectMapper和JSONObject默认对null字段进行转换

(1)使用GSON时,对null字段进行转换的设置

 Gson gsonSerializeNull = new GsonBuilder().serializeNulls().create();

(2)使用ObjectMapper对null字段不进行转换的设置


ObjectMapper objectMapper= new ObjectMapper();

objectMapper.setSerializationInclusion(Include.NON_NULL);

(3)使用json-lib的JSONObject在bean转json时对null字段不转换的设置


 PropertyFilter filter = new PropertyFilter() {

            public boolean apply(Object object, String fieldName,

                    Object fieldValue) {

                return null == fieldValue;

            }

        };

        jsonConfig.setJsonPropertyFilter(filter);

        System.out.println(JSONObject.fromObject(s, jsonConfig).toString());

2.测试

Student类


package com.beanjson.test;


public class Student {

    private String name;
 
    private int id;
 
    private Integer age = null;

    public Student() {

    }

    public String getName() {
        return name;
    }

 
    public void setName(String name) {
        this.name = name;
    }

 
    public int getId() {
        return id;
    }

 
    public void setId(int id) {
        this.id = id;
    }


    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

}

main函数


package com.beanjson.test;

 

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

import net.sf.json.util.PropertyFilter;

 

import com.fasterxml.jackson.annotation.JsonInclude.Include;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

 

public class Test {

 

    private static ObjectMapper objectMapper;

 

    public static void main(String[] args) throws JsonProcessingException {

        Student s = new Student();

        s.setName("abc");

        s.setId(1);

        s.setAge(null);

 

        System.out.println("----------gson(默认对null不转换)---------");

        Gson gson = new Gson();

        System.out.println(gson.toJson(s));

        System.out.println("----------gson(对null字段转换)---------");

        Gson gsonSerializeNull = new GsonBuilder().serializeNulls().create();

        System.out.println(gsonSerializeNull.toJson(s));

 

        System.out.println("----------objectMapper对null字段不转换的设置---------");

        objectMapper = new ObjectMapper();

        objectMapper.setSerializationInclusion(Include.NON_NULL);

        System.out.println(objectMapper.writeValueAsString(s));

 

        System.out.println("----------json-lib对null字段不转换的设置---------");

        JsonConfig jsonConfig = new JsonConfig();

        PropertyFilter filter = new PropertyFilter() {

            public boolean apply(Object object, String fieldName,

                    Object fieldValue) {

                return null == fieldValue;

            }

        };

        jsonConfig.setJsonPropertyFilter(filter);

        System.out.println(JSONObject.fromObject(s, jsonConfig).toString());

    }

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Org.json.JSONObject类有以下构造方法: 1. JSONObject():创建一个空的JSONObject对象。 2. JSONObject(JSONObject obj):根据传入的JSONObject对象创建一个新的JSONObject对象,两者具有相同的内容。 3. JSONObject(Map<?, ?> map):根据传入的Map对象创建一个新的JSONObject对象,map中的key必须为String类型,value可以是任意类型。 4. JSONObject(Object bean):根据传入的JavaBean对象创建一个新的JSONObject对象,该对象的所有属性都将被转换JSONObject的键值对。 5. JSONObject(String source):根据传入的JSON字符串创建一个新的JSONObject对象。 6. JSONObject(JSONTokener x):根据传入的JSONTokener对象创建一个新的JSONObject对象,JSONTokener对象用于解析JSON字符串。 7. JSONObject(Collection<?> collection):根据传入的Collection对象创建一个新的JSONObject对象,collection中的元素必须是JavaBean对象,该对象的所有属性都将被转换JSONObject的键值对。 以上是Org.json.JSONObject的所有构造方法。 ### 回答2: Org.json.JSONObject类是Java语言中的一个类库,用于处理JSON数据。它提供了多个构造方法,用于创建JSONObject对象。下面是列举的所有构造方法: 1. `JSONObject()` 没有参数的构造方法,用于创建一个空的JSONObject对象。 2. `JSONObject(String json)` 接收一个JSON格式的字符串作为参数,用于将JSON字符串转换JSONObject对象。 3. `JSONObject(Map<?, ?> map)` 接收一个Map对象作为参数,用于将Map对象转换JSONObject对象。 注意:Map的key和value都必须是基本类型数据,不能是自定义对象。 4. `JSONObject(Object bean)` 接收一个JavaBean对象作为参数,用于将JavaBean对象转换JSONObject对象。 注意:JavaBean对象的属性必须为公共的,并且具有对应的getter方法。 5. `JSONObject(JSONTokener x)` 接收一个JSONTokener对象作为参数,用于从JSONTokener对象中解析出JSONObject对象。 6. `JSONObject(JSONObject jo, String[] names)` 接收一个JSONObject对象和一个字符串数组作为参数,用于从给定的names数组中提取对应的键值对,并创建一个新的JSONObject对象。 注意:names数组中的字符串值为要提取的键,如果有键不存在,则在新的JSONObject对象中对应的值为null。 7. `JSONObject(Object object, String[] names)` 接收一个自定义对象和一个字符串数组作为参数,用于从给定的names数组中提取对应的属性值,并创建一个新的JSONObject对象。 注意:names数组中的字符串值为要提取的属性名,如果有属性不存在,则在新的JSONObject对象中对应的值为null。 这些构造方法可以根据不同的参数类型,将不同格式的数据转换JSONObject对象,并进行后续的JSON数据处理和操作。 ### 回答3: Org.json.JSONObject是一个用于解析和构建JSON对象的类,它提供了多个构造方法来创建不同类型的JSON对象。下面列举了Org.json.JSONObject的所有构造方法: 1. JSONObject() 创建一个空的JSON对象。 2. JSONObject(String json) 通过传入一个JSON字符串,创建一个对应的JSON对象。 3. JSONObject(Map<? extends String, ? extends Object> map) 通过传入一个Map对象,创建一个JSON对象。Map中的键必须是字符串类型,值可以是任意类型的对象。 4. JSONObject(JSONObject json) 通过传入一个已有的JSON对象,创建一个新的JSON对象。这个构造方法可以用来进行JSON对象的深拷贝。 5. JSONObject(JSONTokener tokener) 通过传入一个JSONTokener对象,创建一个JSON对象。JSONTokener是一个用于解析JSON文本的工具类。 6. JSONObject(Object bean) 通过传入一个Java Bean对象,创建一个JSON对象。JSON对象的键会根据Java Bean字段名自动生成,值将从相应的字段中获取。 除了上述构造方法之外,还有一些辅助的静态方法可以用于创建JSON对象,例如: 1. JSONObject.wrap(Object value) 创建一个JSON对象,并将指定的值包装为JSON对象。 2. JSONObject.NULL 创建一个表示null值的JSON对象。 以上就是Org.json.JSONObject的所有构造方法。开发者可以根据具体的需求选择合适的构造方法来创建JSON对象。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值