ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

2021-07-15 21:33:59  阅读:147  来源: 互联网

标签:fastjson name 对象 age JSON json student 字符串


fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson

首先JSON有两种格式,一种是对象格式,一种是对象数组。

在JSON使用中主要的3个类:JSONJSONObjecJSONArray

其中JSONObjecJSONArray继承于JSON的。

JSON对象(JSONObject)

{"id":1,"name":"chen"}

JSON对象数组(JSONArray)

[
    {"id":1,"name":"chen"},
    {"id":2,"name":"张三"}
]

下面直接进入正题:

Java Bean 和JSON字符串的互转

Java Bean 转 JSON字符串

Java Bean是指Java中的一个普通对象(实体类)例如:

public class Student{
    private String name; // 姓名
    private Integer age; // 年龄
    
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(Integer age){
        this.age = age;
    }
    public Integer getAge(){
        return age;
    }
    @Override
    public String toString() {
        return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

使用JSON类的toJSONString()方法,实现JSON对象转化为JSON字符串和Java Bean对象转化为JSON字符串。仔细观察源码发现,该方法经过多次重载,但最终都是实现JSON对象转化为JSON字符串和Java Bean对象转化为JSON字符串。

@Test
public void BeanToJSONTest(){
    Student student = new Student();
    student.setName("小明");
    student.setAge(20);
    
    String s1 = JSON.toJSONString(student);
    String s2 = JSONObject.toJSONString(student);
    String s3 = JSONArray.toJSOnString(student);
    
   	System.out.println("s1: " + s1);
    System.out.println("s2: " + s2);
    System.out.println("s3: " + s3);
}

// 输出
s1: {"age":20,"name":"小明"}
s2: {"age":20,"name":"小明"}
s3: {"age":20,"name":"小明"}

JSON.toJSONString()JSONObject.toJSONStringJSONArray.toJSOnString,上面说到JSONObjectJSONArray是继承JSON的,看JSONObjectJSONArray的源码并没有重写父类的toJSONString()的方法,而是直接使用父类的toJSONString方法,之前一直弄不明白,看了源码才知道。

JSON字符串 转 Java Bean

使用JSON类的parseObject()方法,实现JSON字符串转换为JSON对象或Java Bean对象。

@Test
public void JOSNToBeanTest(){
   String strJson = "{\"age\":20,\"name\":\"小明\"}";
    
   JSONObject jsonObject = JSON.parseObject(strJson);
   System.out.println("jsonObject: " + jsonObject);
    
   Student student = JSON.parseObject(strJson,Student.class);
   System.out.println("student: " + student);
}

// 输出
jsonObject: {"name":"小明","age":20}
student: Student{name='小明', age=20}

该方法返回JSONObject对象,用于实现JSON字符串向JSON对象的转化,其内部调用了parse()方法,调用底层的DefaultJSONParser解析类进行转化,在转化失败时,抛出can not cast to JSONObject异常。

该方法不仅能实现JSON字符串向JSON对象的转化,经过重载之后,还能实现JSON字符串向Java Bean对象的转化

标签:fastjson,name,对象,age,JSON,json,student,字符串
来源: https://www.cnblogs.com/ctf99525/p/15017583.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有