JSON有兩種結構
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構
1、對象:對象在js中表示為“{}”括起來的內容,數據結構為 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為對象.key 獲取屬性值,這個屬性值的類型可以是數字、字符串、數組、對象幾種。
2、數組:數組在js中是中括號“[]”括起來的內容,數據結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是數字、字符串、數組、對象幾種。
經過對象、數組2種結構就可以組合成復雜的數據結構了。
一、使用fastjson
1、到mvn(https://mvnrepository.com)庫中引入
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>
2、使用fastjson api
public static final Object parse(String text); // 把JSON字符串parse為JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON字符串parse成JSONObject,注意的是,json字符串與json對象是不一樣的 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。
案例:
測試類
package com.sanyouhome.json; import java.util.List; class Hobby{ private Long itemId; private String itemName; public Long getItemId() { return itemId; } public void setItemId(Long itemId) { this.itemId = itemId; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } }
public class Boss { private Long id; private String name; private List<Hobby> hobby; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Hobby> getHobby() { return hobby; } public void setHobby(List<Hobby> hobby) { this.hobby = hobby; } @Override public String toString() { return "Boss{" + "id=" + id + ", name='" + name + '\'' + ", hobby=" + hobby + '}'; } }
測試方法
//定義json字符串 String jsonStr = "{\"id\":\"10\",\"name\":\"chrchr\",\"hobby\":[{\"itemId\":\"20\",\"itemName\":\"籃球\"},{\"itemId\":\"21\",\"itemName\":\"游泳\"}]}"; //將json字符串轉成json對象,parseObject JSONObject jsonObject = JSON.parseObject(jsonStr); //System.out.println(jsonObject.toString()); //將json對象轉成java對象,toJavaObject,參數1【json對象】,參數2 【javaBean】 Boss boss1 = JSON.toJavaObject(jsonObject, Boss.class); //System.out.println(boss1.toString()); //將json字符串轉成java對象,parseObject,參數1【json字符串】,參數2【javaBean】 Boss boss2 = JSON.parseObject(jsonStr, Boss.class); //System.out.println(boss2.toString()); Boss boss3 = new Boss(); boss3.setId(1L); boss3.setName("chrchr"); Hobby hobby = new Hobby(); hobby.setItemId(30L); hobby.setItemName("lanqiu"); ArrayList<Hobby> hobbies = new ArrayList<>(); hobbies.add(hobby); boss3.setHobby(hobbies); //將java對象轉成json對象,toJSONString JSONObject o = (JSONObject) JSON.toJSON(boss3); //System.out.println(o); //將java對象轉成json字符串,toJSONString String s = JSONObject.toJSONString(boss3); //System.out.println(s); //將java對象轉成json字符串,toJSONString String s1 = new JSONObject().toJSONString(boss3); //獲取json對象中的某值,getString String name = jsonObject.getString("name"); System.out.println(name);
其中JSONObject是繼承了JSON實現了Map<String, Object>,並且都是使用的Map中的方法。可以說JSONObject相當於Map<String, Object>
JSONObject extends JSON implements Map<String, Object>
JSONArray是繼承了JSON實現List<Object>,並且都是使用的List中的方法。可以說JSONArray相當於List<Object>
JSONArray extends JSON implements List<Object>
3、使用net.sf.json.JSONObject
//json字符串、java對象、map轉成JSONObject對象
JSONObject.fromObject(hashMap)
//json對象轉換成java對象,並獲取java對象屬性 JSONObject.toBean(jsonStu, Student.class); jsonObj.toString()
//json數組字符串、list集合轉成JSONArray數組類型對象
JSONArray.fromObject(arrayList)
