阿里巴巴fastjson的使用

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里巴巴fastjson的使用相关的知识,希望对你有一定的参考价值。

一、项目结构

技术分享

一个学生类。当中学生类中能够包括Course类对象
使用Maven管理项目的能够加入fastjson的坐标:

 <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.4</version>
 </dependency>

二、数据对象转化为Json字符串

GenerateJson.java代码标识转化为json字符串
(1)将学生对象转化为json,当中学生中包括Course对象

@Test
    public void testSimpleJSON(){
        Student stu = new Student("xuliugen", "nan", "123123", "100");
        Course course = new Course("JAVA", "xiaobin", "100");
        stu.setCourse(course);
        String json = JSON.toJSONString(stu);
        System.out.println(json);
    }
{
    "course":{
        "coursename":"JAVA",
        "coursescore":"100",
        "courseteacher":"xiaobin"
    },
    "password":"123123",
    "score":"100",
    "sex":"nan",
    "username":"xuliugen"
}

(2)将一个单独的实体对象转化为json

@Test
    public void testListJSON(){
        JSONTest jt1 = new JSONTest("xuliugen", "nan");
        JSONTest jt2 = new JSONTest("xieyan", "nv");
        List<JSONTest> li = new ArrayList<JSONTest>();
        li.add(jt1);
        li.add(jt2);
        String jsonstr = JSON.toJSONString(li);
        System.out.println(jsonstr);
    }
[{"name":"xuliugen","sex":"nan"},{"name":"xieyan","sex":"nv"}]

(3)将包括多个相似于(1)中的实体对象转化为json

@Test
    public void testMulJSON(){
        Student stu = new Student("xuliugen", "nan", "123123", "100");
        Course course = new Course("JAVA", "xiaobin", "100");
        stu.setCourse(course);
        Student stu2 = new Student("xieyan", "nan", "123123", "100");
        Course course2 = new Course("music", "qwe", "100");
        stu2.setCourse(course2);

        List<Student> stuList = new ArrayList<Student>();
        stuList.add(stu);
        stuList.add(stu2);
        String json2 = JSON.toJSONString(stuList);
        System.out.println(json2);
    }
[
    {
        "course":{
            "coursename":"JAVA",
            "coursescore":"100",
            "courseteacher":"xiaobin"
        },
        "password":"123123",
        "score":"100",
        "sex":"nan",
        "username":"xuliugen"
    },
    {
        "course":{
            "coursename":"music",
            "coursescore":"100",
            "courseteacher":"qwe"
        },
        "password":"123123",
        "score":"100",
        "sex":"nan",
        "username":"xieyan"
    }
]

三、解析json数据到实体对象

(1)解析上述(1)中学生中包括Course的对象

[{"name":"xuliugen","sex":"nan"},{"name":"xieyan","sex":"nv"}]
    @Test
    public void testParseSimpleJSON(){
        String json = "[{\"name\":\"xuliugen\",\"sex\":\"nan\"},{\"name\":\"xieyan\",\"sex\":\"nv\"}]";
        JSONArray jsonArray = JSON.parseArray(json);
        String str = jsonArray.getString(0);
        JSONTest jsonTest = JSON.parseObject(str,JSONTest.class);
        System.out.println(jsonTest.getSex());
    }
{
    "course":{
        "coursename":"JAVA",
        "coursescore":"100",
        "courseteacher":"xiaobin"
    },
    "password":"123123",
    "score":"100",
    "sex":"nan",
    "username":"xuliugen"
}

(2)因为仅仅有一个对象,解析例如以下:

@Test
    public void testParseStudentIncludeCourseJSON() {
        String json = "{\"course\":{\"coursename\":\"JAVA\",\"coursescore\":\"100\",\"courseteacher\":\"xiaobin\"},\"password\":\"123123\",\"score\":\"100\",\"sex\":\"nan\",\"username\":\"xuliugen\"}";
        Student stu = JSON.parseObject(json,Student.class);
        System.out.println(stu.getPassword());
    }

(3)将上述中的(3)当有多个上述的对象的时候,解析例如以下:

[
    {
    "course":{
        "coursename":"JAVA",
        "coursescore":"100",
        "courseteacher":"xiaobin"
    },
    "password":"123123",
    "score":"100",
    "sex":"nan",
    "username":"xuliugen"
    },
    {
    "course":{
        "coursename":"music",
        "coursescore":"100",
        "courseteacher":"qwe"
    },
    "password":"123123",
    "score":"100",
    "sex":"nan",
    "username":"xieyan"
    }
]

解析例如以下:

@Test
    public void testParseListStudentIncludeCourseJSON() {
        String json = "[{\"course\":{\"coursename\":\"JAVA\",\"coursescore\":\"100\",\"courseteacher\":\"xiaobin\"},\"password\":\"123123\",\"score\":\"100\",\"sex\":\"nan\",\"username\":\"xuliugen123\"},{\"course\":{\"coursename\":\"music\",\"coursescore\":\"100\",\"courseteacher\":\"qwe\"},\"password\":\"123123\",\"score\":\"100\",\"sex\":\"nan\",\"username\":\"xieyan\"}]";

        JSONArray jsonArray = JSON.parseArray(json);
        String str = jsonArray.getString(0);
        Student stu = JSON.parseObject(str, Student.class);
        System.out.println(stu.getUsername());
    }


以上是关于阿里巴巴fastjson的使用的主要内容,如果未能解决你的问题,请参考以下文章

阿里巴巴fastjson的使用

Gson和Fastjson

阿里巴巴开源的 JSON 解析库 Fastjson 被曝高危漏洞,官方已发布安全公告

Fastjson 反序列化 Jndi 注入利用 JdbcRowSetImpl 链

Fastjson 反序列化 Jndi 注入利用 JdbcRowSetImpl 链

阿里巴巴fastjson 包的使用解析json数据