1. 程式人生 > >JSON詳細講解和簡單案列

JSON詳細講解和簡單案列

JSON的全稱是”JavaScript Object Notation”,即JavaScript物件表示法 是儲存和交換文字資訊的語法

1.Google的Gson

Gson是目前功能最全的Json解析神器。Gson的應用主要為toJson與fromJson兩個轉換函式,無依賴,不需要例外額外的jar,能夠直接跑在JDK上。而在使用這種物件轉換之前需先建立好物件的型別以及其成員才能成功的將JSON字串成功轉換成相對應的物件。

Gson在功能上面無可挑剔,但是效能上面比FastJson有所差距。

Gson允許把簡單的Java物件(Plain Old Object,POJO)轉換成JSON,反之亦然。開發者所要做的就是把資料定義成普通的Java物件,提供get和set方法,並在專案中引入Gson庫。

2.阿里巴巴的FastJson

Fastjson是一個Java語言編寫的高效能的JSON處理器,由阿里巴巴公司開發。
無依賴,不需要例外額外的jar,能夠直接跑在JDK上。
FastJson在複雜型別的Bean轉換Json上會出現一些問題,可能會出現引用的型別,導致Json轉換出錯,需要制定引用。
FastJson採用獨創的演算法,將parse的速度提升到極致,超過所有json庫。

如果只是功能要求,沒有效能要求,可以使用google的Gson,
如果有效能上面的要求可以使用Gson將bean轉換json確保資料的正確,使用FastJson將Json轉換Bean.


1.json物件解析:

demo:

public class Josn1 {

public static void main(String[] args) {
String js="{'name':'呂佳佳','age':'25'}";
JSONObject obj;
try {
obj = new JSONObject(js);
String name= obj.getString("name");
String age=obj.getString("age");

System.out.println("name"+name+"==="+"age"+age);
} catch (JSONException e) {
// TODO 自動生成的 catch 塊

e.printStackTrace();
}


}


}

執行結果:name呂佳佳===age25

2.json陣列解析

demo:首先建立一個方法,可帶參可不帶

public List<Student> getListPersonByArray(String  josn ){
List<Student>  slist= new  ArrayList<Student>();
try {
JSONArray  jsonarray= new JSONArray(josn);
for(int i=0;i<jsonarray.length();i++){
JSONObject jsonob=(JSONObject) jsonarray.get(i);
slist.add(new Student(jsonob.optString("name")));
System.out.println(jsonob.optString("name")+jsonob.optString("age"));
}
} catch (JSONException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}

return slist;


}
          

測試方法:        public static void main(String[] args) {
               //除錯陣列json
                    String josn="[{name:'產品'},{age:'12'},{sex:'男'}]";
                    Josn1 ceshi=new Josn1();
                    ceshi.getListPersonByArray(josn);

}


}

執行結果:產品
    12