最近在开发过程中使用了大量的json
作为前后端数据交换的方式,由于之前没有对json
做过系统的学习,所有在使用过程中查阅了大量的文档与资料,这里主要记录了我在开发后对json
以及fastjson
使用的总结
JSON
(javaScript Object Notation)是一种轻量级的数据交换格式。主要采用键值对({"name": "json"}
)的方式来保存和表示数据。JSON
是JS
对象的字符串表示法,它使用文本表示一个JS
对象的信息,本质上是一个字符串。更多简介见介绍JSON。
在日志解析,前后端数据传输交互中,经常会遇到字符串(String)与json
,XML
等格式相互转换与解析,其中json
以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。fastjson是一个java语言编写的高性能且功能完善的JSON库,它采用一种“假定有序快速匹配”的算法,把JSON Parse
的性能提升到了极致。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中
fastjson API 入口类是com.alibaba.fastjson.JSON
,常用的序列化操作都可以在JSON
类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
现在pom.xml文件添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
测试需要的对象,Student.java
package com.test.json;
/**
student类(测试需要的对象)
*/
public class Student {
//必须要有空参构造、私有属性、标准的get/set
private String name;
private int age;
private int score;
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 int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name=‘" + name + ‘\‘‘ +
", age=" + age +
", score=" + score +
‘}‘;
}
}
测试json转化,JSONDemo.java
package com.lemon.json;
/**
测试fastjson,字符串专对象,对象转字符串
*/
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.Map;
public class JSONdemo {
public static void main(String[] args) {
//1、json字符串-》java对象 {"name": "张三", "age": 18, "score":100}
String jsonStr = "{\"name\": \"张三\", \"age\": 18, \"score\":100}";
//parseObject(json字符串,需要转换的java类.class)
Student s = JSONObject.parseObject(jsonStr,Student.class);
System.out.println(s);
//
Map<String,Object> map = JSONObject.parseObject(jsonStr, Map.class);
System.out.println(map);
//
// //2、java对象 -> json字符串
// //s -> jsonStr
System.out.println(JSONObject.toJSONString(s));
System.out.println(JSONObject.toJSONString(map));
//3、json数组字符串-》java集合对象
String jsonStr =
"[{\"name\": \"张三\", \"age\": 18, \"score\":100}," +
"{\"name\": \"老王\", \"age\": 38, \"score\":10}]";
List<Student> students = JSONObject.parseArray(jsonStr, Student.class);
System.out.println(students);
System.out.println(JSONObject.toJSONString(students));
}
}
原创作者出处:https://www.cnblogs.com/dmego/p/9033080.html
原文:https://www.cnblogs.com/zhiyu07/p/14255902.html