1. 目標
把類的對象存儲到字符串可存儲
2. 類定義
public interface JsonInterface { }
mport com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; @Setter @Getter public class JsonVo implements JsonInterface { private String id; private String name; public JsonVo(String id, String name) { super(); this.id = id; this.name = name; } @Override public String toString() { return String.format("id:%s |||| name:%s", id, name); } }
3. 測試
public void test() { JsonInterface tmp = new JsonVo("id1", "name1"); String json = JSON.toJSONString(tmp); System.out.println(json); JsonInterface jsonVo = JSON.parseObject(json, JsonVo.class); System.out.println(jsonVo); System.out.println("--------"); byte[] bytes = JSON.toJSONBytes(tmp); System.out.println(bytes); JsonInterface jsonVo2 = JSON.parseObject(bytes, JsonVo.class); System.out.println(jsonVo2); }
結果
{"id":"id1","name":"name1"} id:id1 |||| name:name1 -------- [B@383534aa id:id1 |||| name:name1
4. Fastjson
Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。它采用一種“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致,是目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經被廣泛使用在緩存序列化、協議交互、Web輸出、Android客戶端等多種應用場景
5. TypeReference
例1
public void test2() { List<Integer> list = new ArrayList<>(); list.add(1); list.add(9); list.add(4); list.add(8); JSONObject jsonObj = new JSONObject(); jsonObj.put("a", list); System.out.println(jsonObj); List<String> list2 = jsonObj.getObject("a", new TypeReference<List<Integer>>(){}); System.out.println(list2); }
結果
{"a":[1,9,4,8]} [1, 9, 4, 8]
例2
public void test3() { List<JsonVo> list = new ArrayList<>(); list.add(new JsonVo("id1", "name1")); list.add(new JsonVo("id2", "name2")); list.add(new JsonVo("id3", "name3")); JSONObject jsonObj = new JSONObject(); jsonObj.put("a", list); System.out.println(jsonObj); List<String> list2 = jsonObj.getObject("a", new TypeReference<List<JsonVo>>(){}); System.out.println(list2); }
結果
{"a":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]} [id:id1 |||| name:name1, id:id2 |||| name:name2, id:id3 |||| name:name3]