com.alibaba.fastjson和net.sf.json的區別


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)

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM