json字串如何從字元轉物件,物件轉字元,轉陣列
阿新 • • 發佈:2021-01-09
前言
最近在開發過程中使用了大量的json
作為前後端資料交換的方式,由於之前沒有對json
做過系統的學習,所有在使用過程中查閱了大量的文件與資料,這裡主要記錄了我在開發後對json
以及fastjson
使用的總結
JSON 介紹
JSON
(javaScript Object Notation)是一種輕量級的資料交換格式。主要採用鍵值對({"name": "json"}
)的方式來儲存和表示資料。JSON
是JS
物件的字串表示法,它使用文字表示一個JS
物件的資訊,本質上是一個字串。更多簡介見介紹JSON。
fastjson 簡介
在日誌解析,前後端資料傳輸互動中,經常會遇到字串(String)與json
XML
等格式相互轉換與解析,其中json
以跨語言,跨前後端的優點在開發中被頻繁使用,基本上可以說是標準的資料交換格式。fastjson是一個java語言編寫的高效能且功能完善的JSON庫,它採用一種“假定有序快速匹配”的演算法,把JSON Parse
的效能提升到了極致。它的介面簡單易用,已經被廣泛使用在快取序列化,協議互動,Web輸出等各種應用場景中
fastjson 常用 API
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。
fastjson 使用例項
現在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