标签:fastjson name 对象 age JSON json student 字符串
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson
首先JSON有两种格式,一种是对象格式,一种是对象数组。
在JSON使用中主要的3个类:JSON,JSONObjec,JSONArray
其中JSONObjec
和JSONArray
继承于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.toJSONString
和JSONArray.toJSOnString
,上面说到JSONObject
和JSONArray
是继承JSON
的,看JSONObject
和JSONArray
的源码并没有重写父类的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()
方法,调用底层的DefaultJSONParse
r解析类进行转化,在转化失败时,抛出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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。