天天看点

了解JSON.parseObject(String str)/JSONObject.parseObject()和JSON.toJSONString()的功能

今天用到了JSON对象和JSON 字符串之间的相互转换,借此记录一下心得。

基础语法:

JSON字符串转化成JSON对象

JSONObject jsonobject = JSON.parseObject(str);
           

或者

JSONObject jsonobject = JSONObject.parseObject(str);
           

功能上是一样的,都是将JSON字符串(str)转换成JSON对象 jsonobject 。注意str一定得是以键值对存在的JSON字符串。

JSON.parseObject(String text, Class clazz)方法

JSON.parseObject(String text, Class clazz),作用就是将指定的JSON字符串转换成自己的实体类的对象。例如:

首先定义一个自己的实体类Test:

public class Test {
    private String name;
    private String age;
    private String addr;
    private String sex;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public String getSex() {
        return sex;
    }

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

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", addr='" + addr + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }

    public Test(String name, String age, String addr, String sex) {
        this.name = name;
        this.age = age;
        this.addr = addr;
        this.sex = sex;
    }
}
           

然后在jsonTest测试类中进行测试

import com.alibaba.fastjson.JSON;

public class jsonTest {
    public static void main(String[] args){
    //haha是Test类没有的
        String jsonString = "{name:'hqz',age:'18',sex:'male',haha:'sd'}";
        /**
         * JSON字符串转化成自己的实体类对象 test
         */
        Test test = JSON.parseObject(jsonString, Test.class);
        System.out.println(test.toString());

        /**
         * 对象转化成JSON 字符串
         */
        String jsonStr = JSON.toJSONString(test);
        System.out.println(jsonStr);
    }
}
           

输出依次为:

test{name='hqz', age='18', addr='null', sex='male'}
{"age":"18","name":"hqz","sex":"male"}
           

可以看到addr=’‘null’’,说明,

①:将JSON字符串转化成对象时,会去填充名称相同的属性,对于JSON字符串中没有,而Test类有的属性,会为null;

②:将对象转化成JSON字符串时,对于JSON字符串有,但是Test类没有的,不做任何处理。

以上。