1. 程式人生 > >fastjson的使用(轉自:http://blog.csdn.net/wx_962464/article/details/37612861)

fastjson的使用(轉自:http://blog.csdn.net/wx_962464/article/details/37612861)

在開發Android的過程中,如果我們經常與伺服器打交道,更新資料等等,那麼json必然是個好的資料格式,但是有了json我們要解析它,使用原生的解析也可以,但是很不高效,所以這裡介紹兩種json資料解析的方式,一種是FastJSon ,這個是阿里巴巴出的,號稱最快的解析速度。第二種使我們偉大的Google提供的Gson 來解析json,兩個解析json都很方便,而且都很強大,在我使用中,基本上都滿足了我的需求,下面簡單就接受一下,我們的使用方法。

首先建立兩個實體類,Student.java 和 Teacher.java 

Student.java 和Teacher.java 的程式碼如下:

[java] view plain copy  print?
  1. package com.android.fastjson.bean;  
  2. publicclass Student {  
  3.     privateint id;  
  4.     private String name;  
  5.     privateint age;  
  6.     /** 
  7.      * 預設的構造方法必須不能省,不然不能解析 
  8.      */
  9.     public Student(){  
  10.     }  
  11.     public Student(int id,String name,int age) {  
  12.         this
    .id = id;  
  13.         this.name = name;  
  14.         this.age = age;  
  15.     }  
  16.     publicint getId() {  
  17.         return id;  
  18.     }  
  19.     publicvoid setId(int id) {  
  20.         this.id = id;  
  21.     }  
  22.     public String getName() {  
  23.         return name;  
  24.     }  
  25.     publicvoid setName(String name) {  
  26.         this
    .name = name;  
  27.     }  
  28.     publicint getAge() {  
  29.         return age;  
  30.     }  
  31.     publicvoid setAge(int age) {  
  32.         this.age = age;  
  33.     }  
  34.     @Override
  35.     public String toString() {  
  36.         return"Student [id=" + id + ", name=" + name + ", age=" + age + "]";  
  37.     }  
  38. }  

[java] view plain copy  print?
  1. package com.android.fastjson.bean;  
  2. import java.util.List;  
  3. publicclass Teacher {  
  4.     privateint id;  
  5.     private String name;  
  6.     private List<Student> students;  
  7.     /** 
  8.      * 預設的構造方法必須不能省,不然不能解析 
  9.      */
  10.     public Teacher() {  
  11.     }  
  12.     public Teacher(int id,String name) {  
  13.         this.id = id;  
  14.         this.name = name;  
  15.     }  
  16.     publicint getId() {  
  17.         return id;  
  18.     }  
  19.     publicvoid setId(int id) {  
  20.         this.id = id;  
  21.     }  
  22.     public String getName() {  
  23.         return name;  
  24.     }  
  25.     publicvoid setName(String name) {  
  26.         this.name = name;  
  27.     }  
  28.     public List<Student> getStudents() {  
  29.         return students;  
  30.     }  
  31.     publicvoid setStudents(List<Student> students) {  
  32.         this.students = students;  
  33.     }  
  34.     @Override
  35.     public String toString() {  
  36.         return"Teacher [id=" + id + ", name=" + name + ", mStudents="
  37.                 + students + "]";  
  38.     }  
  39. }  

上面 的程式碼比較簡單,主要就幾個屬性,這裡值得注意的是, 預設的建構函式一定要寫,不然是無法解析的。(對於fastjson 嚴格按照JavaBean的規範來,有一點不對就無法解析,這裡一定要切記,每一個實體類的屬性的get , set 方法必須寫,切方法第四個字母必須大寫,最好使用Eclipse的source->genreal setters and getters 生成get,set 方法,切記,切記 )。對於Gson 這裡就沒有這麼多的要求了,但最好還是按照JavaBean來寫,避免一些位置的錯誤。

上面主要基本的介紹完了,就開始解析,首先要下載fastjson 和Gson的jar包,這個網上很多請自行下載。

首先看 fastjson 的解析

首先解析一個實體類為json 格式。

[html] view plain copy  print?
  1. Student student = new Student(0, "Aaron", 24);  
  2.         System.out.println(JSON.toJSONString(student));  
[html] view plain copy  print?
  1. 輸出結果為:{"age":24,"id":0,"name":"Aaron"}  
輸出的json格式與我們的Student中定義的屬性其實是不一致的,這個其實不影響我們生成以及後面的解析,因為他有嚴格的get和set方法定義。

更復雜一點的資料型別也可以很方便的使用JSON.toJsonString(Object o) 這個方法進行解析成json格式。

[java] view plain copy  print?
  1. List<Student> students = new ArrayList<Student>();  
  2.         for(int i=0;i<5;i++) {  
  3.             Student stu = new Student(i, "Student" + i, 18 +i);   
  4.             students.add(stu);  
  5.         }  
解析結果為: [plain] view plain copy  print?
  1. [{"age":18,"id":0,"name":"Student0"},{"age":19,"id":1,"name":"Student1"},{"age":20,"id":2,"name":"Student2"},{"age":21,"id":3,"name":"Student3"},{"age":22,"id":4,"name":"Student4"}]  
   我們來看看更復雜一點的結構。  我們將一個Teacher 列表來解析,一個Teacher物件中是包含Student 列表的這個也在我們常用的資料模型,下面看看程式碼: [java] view plain copy  print?
  1. List<Teacher> teaList = new ArrayList<Teacher>();  
  2.         long time = System.currentTimeMillis();  
  3.         for(int i=0;i<10;i++) {  
  4.             Teacher teacher = new Teacher(i, "Teacher " + i);  
  5.             List<Student> stus = new ArrayList<Student>();  
  6.             for(int j = 0 ;j<4;j++) {  
  7.                 Student s = new Student(j, "Student" + j, 18 +j);   
  8.                 stus.add(s);  
  9.             }  
  10.             teacher.setStudents(stus);  
  11.             teaList.add(teacher);  
  12.         }  
  13.         String jsonTeach = JSON.toJSONString(teaList);  
  14.         System.out.println("fastjson = " + jsonTeach);  

結果為:

[plain] view plain copy  print?
  1. fastjson = [{"id":0,"name":"Teacher 0","students":[{"age":18,"id":0,"name":"Student0"},{"age":19,"id":1,"name":"Student1"}]},{"id":1,"name":"Teacher 1","students":[{"age":18,"id":0,"name":"Student0"},{"age":19,"id":1,"name":"Student1"}]},{"id":2,"name":"Teacher 2","students":[{"age":18,"id":0,"name":"Student0"},{"age":19,"id":1,"name":"Student1"}]},{"id":3,"name":"Teacher 3","students":[{"age":18,"id":0,"name":"Student0"},{"age":19,"id":1,"name":"Student1"}]}]  
[plain] view plain copy  print?
  1. 還是一個簡單的函式而已,就能辦到。  
[plain] view plain 

相關推薦

fastjson的使用:http://blog.csdn.net/wx_962464/article/details/37612861

在開發Android的過程中,如果我們經常與伺服器打交道,更新資料等等,那麼json必然是個好的資料格式,但是有了json我們要解析它,使用原生的解析也可以,但是很不高效,所以這裡介紹兩種json資料解析的方式,一種是FastJSon ,這個是阿里巴巴出的,號稱最快的解

eclipse 集成Maven:http://blog.csdn.net/wode_dream/article/details/38052639

lin loser 說明 位置 到你 ide lan core fontsize 當自己越來越多的接觸到開源項目時,發現大多數的開源項目都是用maven來夠建的。並且在開發應用時,也越來越意識到maven的確會解決很多問題,如果你要了解maven,可以參考:Maven入門

Hibernate物件三種狀態詳細分析http://blog.csdn.net/redarmy_chen/article/details/7069482

在hibernate中有三種狀態:瞬時態(Transient)、 持久態(Persistent)、脫管態(Detached)。處於持久態的物件也稱為PO(Persistence Object),瞬時物件和脫管物件也稱為VO(Value Object)。通過自己在網上的搜尋,

Go語言庫之strconv包轉載--http://blog.csdn.net/alvine008/article/details/51283189

整型 print 特殊 imp size 無符號 this http 相差 golang strconv.ParseInt 是將字符串轉換為數字的函數 func ParseInt(s string, base int, bitSize int) (i int64, err

Mongodb 叢集加keyFile認證,Mongodb使用者管理http://blog.csdn.net/wlzjsj/article/details/61421230

介紹 自從遠古計繩結開始,資料庫的儲存就註定了今天的地位和多樣性,Nosql的出現更是解決了現有的關係型資料庫無法解決的一些難題,對高效能,靈活度,擴充套件性,海量資料的問題。隨之而出現的高速記憶體索引資料庫、列式儲存、影象儲存等等,這篇文章主要講的是mongodb文件型資料庫,mongodb目

Notepad++外掛之ftp/sftp遠端編輯功能,以及各種外掛http://blog.csdn.net/happy_wu/article/details/73302994

Notepad++的ftp/sftp遠端編輯功能介紹:Notepad++是一個優秀的開源編輯器,最大特性就是外掛豐富,這裡分享一下我常用的實用外掛,其中一些是Npp預裝的。這些外掛主要是開發相關的,所以如果想需要其它外掛,可以瀏覽一下。這裡我主要寫的是FTP外掛。一般情況下我

laravel session使用 http://blog.csdn.net/angle_hearts/article/details/53923782

com lar new get ssi name sym 存儲 angle use Symfony\Component\HttpFoundation\Session\Session;//存儲session$session = new Session;$session->

jquery中使用event.target的幾點說明 (http://blog.csdn.net/zm2714/article/details/8119642)

board ngs 使用 net spa dtd meta xhtml function jquery中使用event.target的幾點說明 event.target 說明:引發事件的DOM元素。 this和event.target的區別 js中事件是

linux音頻alsa-uda134x驅動文檔閱讀之一http://blog.csdn.net/wantianpei/article/details/7817293

發出 hand 增加 int chang == 音頻 set device 前言 目前,linux系統常用的音頻驅動有兩種形式:alsa oss alsa:現在是linux下音頻驅動的主要形式,與簡單的oss兼容。oss:過去的形式而我們板子上的uda1341用的就是als

SSIS獲得Excel行號(http://blog.csdn.net/zplume/article/details/19113911)

number source 行數 put article 情況 art r+ 數據庫 問題描述: 首先個人並不推薦將Excel作為數據源,因為Excel單元格式會引起特別多的數據轉換問題,例如:單元格裏明明是2.89,但SSIS抽取到數據庫裏面之後卻變成了2.8899999

iotcl函式(http://blog.csdn.net/shanshanpt/article/details/19897897)

我這裡說的ioctl函式是指驅動程式裡的,因為我不知道還有沒有別的場合用到了它,所以就規定了我們討論的範圍。寫這篇文章是因為我前一陣子被ioctl給搞混了,這幾天才弄明白它,於是在這裡清理一下頭腦。 一、 什麼是ioctl     ioctl是裝置驅動程式中

關於LIST擴容的三種方式轉載https://blog.csdn.net/wt122694/article/details/81173128

int[] arr2=new int[arr1.length*2] //新陣列長度 for(int i=0;i<arr1.length;i++){ //複製 arr2[i]=arr1[i]; }  

python tkinter中點選回車清空Text,同時游標顯示在0.0轉載 https://blog.csdn.net/dcyywin8/article/details/83306011

所遇問題: 當想要使用Text中的繫結事件回車清空Text中的內容時,總是先執行清空操作,再執行回車操作,這樣每次Text其它內容都清空了,但還是會留下一個回車。   思路: 使用bind方法獲取鍵盤的事件,當鍵盤事件(event)的keycode等於13時,觸發事件。新建一個執行緒作為被觸

Python Tkinter 會話窗口轉載https://blog.csdn.net/bnanoou/article/details/38515083

until 運行 gif extra columns please sso alt date() Dialog Windows While the standard dialogs described in the previous section may be s

微擎模板函式、元件: https://blog.csdn.net/qq_32737755/article/details/78064604

官方文件裡模板函式寫的很少只有幾個!但這些元件直接呼叫很方便開發者開發,因此將其整理,方便查詢呼叫!使用前請務必 load()->func('tpl'); 載入模板元件函式 12模板函式在/framework/function/目錄下的tpl.func.php 檔案中定

sqlite 資料型別 全面http://blog.csdn.net/jin868/article/details/5961263

一般資料採用的固定的靜態資料型別,而SQLite採用的是動態資料型別,會根據存入值自動判斷。SQLite具有以下五種資料型別: 1.NULL:空值。 2.INTEGER:帶符號的整型,具體取決有存入數字的範圍大小。 3.REAL:浮點數字,儲存為8-byte IEEE浮

常用命令http://blog.csdn.net/ljianhui/article/details/11100625/

中斷 toc g++ 當前 rep bin 啟動 col 之間 1、cd命令 這是一個非常基本,也是大家經常需要使用的命令,它用於切換當前目錄,它的參數是要切換到的目錄的路徑,可以是絕對路徑,也可以是相對路徑。如: [plain] view plain copy

極大極小搜索思想+α/β減枝 【-----https://blog.csdn.net/hzk_cpp/article/details/79275772】

ima 基本 個數 博弈論 數字 這就是 pre -- 繼續 極大極小搜索,即minimax搜索算法,專門用來做博弈論的問題的暴力. 多被稱為對抗搜索算法. 這個搜索算法的基本思想就是分兩層,一層是先手,記為a,還有一層是後手,記為b. 這個搜索是認為這a與b的利益關

Annovar註釋說明【轉載http://blog.csdn.net/u013816205/article/details/51262289】

probably scores hit bar package 文件轉換 命名 gre 下載 ANNOVAR是一個perl編寫的命令行工具,能在安裝了perl解釋器的多種操作系統上 執行。允許多種輸入文件格式,包括最常被使用的VCF格式。輸出文件也有多種格式,包括註釋過的V

用maven插件自動生成mybatis代碼轉載http://blog.csdn.net/yinkgh/article/details/52512983

force true 添加 ima jdbc dbcc col sdn conn 1、在springmvc+mybatis項目的pom.xml文件中加如下內容,添加之後,maven會自動下載相關jar包,時間較長,需要耐心等待~~ <build> <