fastJSON的入门级使用

一、FastJson的用法

将符合json格式的字符串转换为json对象或者是json数组

二、测试用例

需要的jar包

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

1.JSON.parseObject(String …,Class T)

測試代碼:

@Test
    public void myTest(){
        String jsonString="{'name':'小明','age':'15','school':'scu'}";
        JSONObject jsonObject = JSON.parseObject(jsonString, JSONObject.class);
        System.out.println(jsonObject);
    }

測試結果:
在这里插入图片描述

2.JSON.parseArray(String …)

測試代碼

@Test
    public void myTest() {
        String jsonMessage = "[" +
                "{'num':'1', '外语':88, '历史':65, '地理':99, 'object':{'k1':'1111','k2':'2222','k3':'3333'}}," +
                "{'num':'2', '外语':58, '历史':45, '地理':19, 'object':{'k1':'2222','k2':'2222','k3':'3333'}}," +
                "{'num':'3', '外语':98, '历史':62, '地理':39, 'object':{'k1':'3333','k2':'2222','k3':'3333'}}" +
                "]";
        JSONArray jsonArray = JSON.parseArray(jsonMessage);
        for(int i=0;i<jsonArray.size();i++){

            //遍历每个json对象
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            System.out.println("第"+i+"个JsonObject对象为: "+ jsonObject);

            //获取属性对应的值,返回值类型为Object
            Object englishScore =  jsonObject.get("外语");
            System.out.println("英语成绩:"+englishScore);

            //获取属性对应的值,返回值类型为字符串
            String earthScore = jsonObject.getString("地理");
            System.out.println("地理成绩:"+earthScore);

            //获取属性对应的值,返回值类型为JSONObject
            JSONObject jsonObj = jsonObject.getJSONObject("object");
            System.out.println(jsonObj);
            //又可以继续对JsonObject对象继续进行操作
            Object v1 = jsonObj.get("k1");
            System.out.println("k1的值为:"+v1);
        }
    }

測試結果:

在这里插入图片描述

三、fastJson和具体JavaBean的结合

1.创建person.class

import java.util.Date;
public class person {
    private String name;
    private  int age;
    private String school;
    private Date date;
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school='" + school + '\'' +
                ", date=" + date +
                '}';
    }
}

2、测试阶段

(1)、json字符串除了包含person.class所有属性,还包含address属性

测试代码:

 @Test
    public void TestJavaBean(){
        //person01里面除了包含person.class所有属性,还包含address属性
        String person01 = "{'name':'李华','age':'15','school':'scu','date':'2019-04-26','address':'四川省成都市一环路'}";

        person perObj01 = JSON.parseObject(person01, person.class);
        
        System.out.println("fastJson自动映射对应属性,多余的属性默认会被忽略:");
        System.out.println("perObj01: "+perObj01);
    }

测试结果:
在这里插入图片描述

(2)、json字符串只包含了部分person.class所有属性,此外包含些额外属性属性

测试代码:

    @Test
    public void TestJavaBean(){   
        String person02 = "{'name':'张三','age':'18','date':'2019-04-26','address':'四川省成都市一环路','interest':'足球'}";
        person perObj02 = JSON.parseObject(person02, person.class);
        System.out.println("fastJson自动映射对应属性,没找到的属性为空:");
        System.out.println("perObj02: "+perObj02);
    }

测试结果:
在这里插入图片描述

(3)、json字符串里面的属性名和类里面的属性名不一样:

修改javaBean里面的person.class:

public class person {
    @JSONField(name = "myName")
    private String name;
    @JSONField(name = "sage")
    private  int age;
    @JSONField(name = "college")
    private String school;
    @JSONField(name = "time")
    private Date date;

测试代码:
@Test
public void TestJavaBean(){

    String person03 = "{'myName':'王五','sage':'21','college':'scu','time':'2019-04-26'}";
    System.out.println("fastJson会严格按照注解自动找寻映射的属性,这时候字符串属性值要和注解一致而不是和java类一致:");
    System.out.println("person03: "+person03);

}

测试结果:
在这里插入图片描述

注意:

字符串可能不符合json的格式,在使用fastjson之前一定要确保你的字符串符合json格式!
提供一个网站可以快速查询指定字符串是否符合json字符串,链接地址:http://www.bejson.com/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值