JSON对象和JSON字符串转成Object对象是简单始使用(复制能直接测试)

本文介绍如何使用fastjson库在Java中处理包含空值或null值的JSON对象转换。通过设置SerializerFeature.WriteMapNullValue特性,可以实现在JSON字符串中保留空值属性,避免在数据传输过程中丢失信息。

需求:有时候,我们要传一个属性值可以为空的的对象,但是用JSON.toJSONString(obj)不能实现,因为该方法只获取其中的属性值为非空(不为“”或者null)的属性和属性值,那怎么办呢?那我下面的例子即将能帮到你!

直接上干货!!

package com.json.test;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.json.model.User;

/**
 * 
 * @Describtion:JSON测试类
 * @author: future
 * 2019年7月28日下午3:32:53
 */
public class JsonTetst {

	@Test
    public void JsonTetst() {
        /**
         * json字符串转化为对象
         * 注意
         * 1、telephone该属性没有值
         * 2、sex该属性值为null
         */
        String jsonString = "{name:'Antony',age:'12',sex:null,telephone:''}";
        User user =  JSON.parseObject(jsonString, User.class);
        System.out.println("toObj==\n"+user.toString());
        /**
         * 对象转化为json字符串
         * 注意,观察telephone和sex属性没有打印出来
         */
        String jsonStr = JSON.toJSONString(user);
        System.out.println("toJSON1==\n"+jsonStr.toString());
       
        /**
         *  重点
         * 注意,观察telephone和sex属性和值都打印出来了
         */
        String toJSONString = JSON.toJSONString(user,SerializerFeature.WriteMapNullValue);
        System.out.println("toJSON2==\n"+toJSONString);
    }
}

其中User对象为:

package com.json.model;
import java.util.Date;
 
/**
 * 
 * @Describtion:
 * @author: future
 * 2019年7月28日下午3:32:11
 */
public class User {
    private String name;
    private Integer age;
    private String sex;
    private Date birthday;
    
    public String getName() {
		return name;
	}

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

	public Integer getAge() {
		return age;
	}

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

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	//省略getter和setter方法
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

测试结果:

这个例子代码参照https://blog.youkuaiyun.com/wodetian1225/article/details/80975719,感谢他的分享,记录一下!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值