1. 程式人生 > >android:json解析的兩個工具:Gson和Jackson的使用小例子

android:json解析的兩個工具:Gson和Jackson的使用小例子

1.簡介

json是android與伺服器通訊過程中常用的資料格式,例如,如下是一個json格式的字串:

  1. {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","age":20},{"name":"stu1","id":"10001","age":21},{"name":"stu1","id":"10002","age":22}]}  

2.android中常用的兩個json庫為:Gson和Jackson,一下就看一下它們是如何將物件轉化為json字串,以及如何將json字串轉化為java物件。

定義Student類:

  1. /* 
  2.  * $filename: Student.java,v $ 
  3.  * $Date: 2014-5-12  $ 
  4.  * Copyright (C) ZhengHaibo, Inc. All rights reserved. 
  5.  * This software is Made by Zhenghaibo. 
  6.  */
  7. package com.example.testjson;  
  8. /* 
  9.  *@author: ZhengHaibo   
  10.  *web:     http://blog.csdn.net/nuptboyzhb 
  11.  *mail:    [email protected] 
  12.  *2014-5-12  Nanjing,njupt,China
     
  13.  */
  14. publicclass Student {  
  15.     private String name;  
  16.     private String id;  
  17.     privateint age;  
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.     publicvoid setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.     public String getId() {  
  25.         return id;  
  26.     }  
  27.     publicvoid setId(String id) {  
  28.         this.id = id;  
  29.     }  
  30.     publicint getAge() {  
  31.         return age;  
  32.     }  
  33.     publicvoid setAge(int age) {  
  34.         this.age = age;  
  35.     }  
  36. }  

定義School類:
  1. /* 
  2.  * $filename: School.java,v $ 
  3.  * $Date: 2014-5-12  $ 
  4.  * Copyright (C) ZhengHaibo, Inc. All rights reserved. 
  5.  * This software is Made by Zhenghaibo. 
  6.  */
  7. package com.example.testjson;  
  8. import java.util.List;  
  9. /* 
  10.  *@author: ZhengHaibo   
  11.  *web:     http://blog.csdn.net/nuptboyzhb 
  12.  *mail:    [email protected] 
  13.  *2014-5-12  Nanjing,njupt,China 
  14.  */
  15. publicclass School {  
  16.     private String name;  
  17.     private String address;  
  18.     List<Student> students;  
  19.     public String getName() {  
  20.         return name;  
  21.     }  
  22.     publicvoid setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.     public String getAddress() {  
  26.         return address;  
  27.     }  
  28.     publicvoid setAddress(String address) {  
  29.         this.address = address;  
  30.     }  
  31.     public List<Student> getStudents() {  
  32.         return students;  
  33.     }  
  34.     publicvoid setStudents(List<Student> students) {  
  35.         this.students = students;  
  36.     }  
  37. }  

初始化一個School的java物件,待使用:
  1. private School initSchoolData(){  
  2.             School school = new School();  
  3.             school.setAddress("Nanjing");  
  4.             school.setName("NUPT");  
  5.             List<Student> list = new ArrayList<Student>();  
  6.             for(int i= 0;i<3;i++){                 
  7.                 Student student = new Student();  
  8.                 student.setAge(20+i);  
  9.                 student.setId("1000"+i);  
  10.                 student.setName("stu"+1);  
  11.                 list.add(student);  
  12.             }  
  13.             school.setStudents(list);  
  14.             return school;  
  15.         }  


3.使用Gson,進行java物件與json字串之間的相互轉換

  1. privatevoid testGson(){  
  2.             School school = initSchoolData();  
  3.             Gson gson = new Gson();  
  4.             //將物件轉化為json字串
  5.             String jsonString = gson.toJson(school).toString();  
  6.             //列印
  7.             System.out.println("GSON="+jsonString);  
  8.             /******分割線*****/
  9.             //將字串轉化為JSON物件
  10.             School resultSchool = gson.fromJson(jsonString, School.class);  
  11.             //列印
  12.             System.out.println(resultSchool.getStudents().get(0).getName());  
  13.         }  

可見,Gson是通過toJson和fromJson兩個方法進行轉換的,使用起來十分方便。

4.使用Jackson

  1. privatevoid testJackson(){  
  2.             School school = initSchoolData();  
  3.             ObjectMapper objectMapper = new ObjectMapper();  
  4.             String jsonString = "";  
  5.             //將物件轉化為Json字串
  6.             try {  
  7.                 jsonString = objectMapper.writeValueAsString(school);  
  8.                 System.out.println("Jackson="+jsonString);  
  9.             } catch (JsonProcessingException e) {  
  10.                 // TODO Auto-generated catch block
  11.                 e.printStackTrace();  
  12.             }  
  13.             //將json字串解析成java物件
  14.             try {  
  15.                 School resultSchool = objectMapper.readValue(jsonString, School.class);  
  16.                 //列印
  17.                 System.out.println(resultSchool.getStudents().get(0).getName());  
  18.             } catch (JsonParseException e) {  
  19.                 // TODO Auto-generated catch block
  20.                 e.printStackTrace();  
  21.             } catch (JsonMappingException e) {  
  22.                 // TODO Auto-generated catch block
  23.                 e.printStackTrace();  
  24.             } catch (IOException e) {  
  25.                 // TODO Auto-generated catch block
  26.                 e.printStackTrace();  
  27.             }  
  28.         }  

使用Jackson,主要是使用writeValueAsString和readValue這兩個方法。此外,Jackson的writeValue和readValue有很多種引數型別,適用於多中場合。

注意:以上只是這兩個工具類的基本用法,更多瞭解,參見官方文件。

相關推薦

android:json解析工具GsonJackson的使用例子

1.簡介 json是android與伺服器通訊過程中常用的資料格式,例如,如下是一個json格式的字串: {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","ag

C語言編程的工具valgrindcore

mit 編程 崩潰 文件 gdb 程序 程序崩潰 檢查內存泄漏 ted 檢查內存泄漏: valgrind --leak-check=full ./ecox_rws_helper 來檢查內存泄漏 程序崩潰看錯誤: ulimit -c unlimited 然後執行程序,會在

Android-json解析(三)原生JSONObject+JSONArray的解析、遍歷及生成等

一、JSONObject和JSONArray的資料表示形式 JSONObject的資料是用 { } 來表示的, 例如: { "id":"1", "courseID":"化學", "title":"滴定實驗",

Android-json解析(二)Jackson的使用

使用Jackson,主要是使用writeValueAsString和readValue這兩個方法。此外,Jackson的writeValue和readValue有很多種引數型別,適用於多中場合。 1、匯入依賴 compile 'com.faste

timestamp的屬性CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

當前系統時間 tro 則無 ron 如果 time ren ins 使用情況 timestamp有兩個屬性,分別是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP兩種,使用情況分別如下: 1.CURRENT_TIMEST

影響序列化的關鍵字transient static

transient:這個關鍵字的作用就是忽略序列化操作,也就是說,當物件中的某個屬性被加上了這個關鍵字後,這個屬性就不會被序列化。這個就不在給出程式碼了,自己可以去嘗試一下,int型別的變數被加上這個關

webview的方法setWebChromeClientsetWebClient

android.webkit庫聚合了webkit核心的瀏覽器功能,webview就是她的一個控制元件,可以使得網頁輕鬆的內嵌到app裡。 並且比較強大的是,還可以直接跟js相互呼叫。 webview有兩個方法:setWebChromeClient和setWebClient

JUnit4Test註解的屬性expectedtimeout

JUnit4:Test文件中的解釋:   The Test annotation supports two optional parameters.   The first, expected, declares that a test method should throw an exception.

Android double保留位小數擷取 四捨五入

方式一: BigDecimal.setScale()方法用於格式化小數點 setScale(2);//表示保留2位小數,預設用四捨五入方式  setScale(2,BigDecimal.ROUND_

ORACLE中的概念userschema的區別聯絡

今天重讀ORACLE官方文件《concepts》,讀到schema的基本概念,對它的理解更進一層,官方文件中關於schema是這樣解釋的:   “A schema is a collection of database objects. A schema is owned

shell整理(32)===嵌套循環的例子

心得 shell 思考 (1)shell打印如下圖所示的圖案。shell 代碼如下:#!/bin/bashecho "-"for i in `seq 9`do for x in `seq $i` do echo -n " "

【SSH框架】生成JSON典型問題1.使用jsonlib工具獲取關聯屬性失敗。2.獲取關聯屬性出現遞迴導致獲取JSON失敗。附解決方案

問題1原因:hibernate中的物件的關聯屬性預設都是懶載入的,而使用jsonlib這個工具類是通過反射去獲取物件中的關聯屬性的,和我們通過後臺直接獲取的方式不同,通過後臺直接獲取管理屬性會讓hibe

安卓學習筆記 -- (安裝環境) Android Studio安裝配置、環境搭建詳細步驟及基本使用 Android StudioSDK官方開發工具下載 Android Studio教程從入門到精通 Android開發-之第一程式HelloWorld!

1、下載Android Studio安裝配置、環境搭建詳細步驟及基本使用    https://www.cnblogs.com/yanglh6-jyx/p/Android_AS_Configuration.html https://blog.csdn.net/k491022087/ar

JSON工具gson (google) 、json-lib、fastJson (alibaba)

          JSON工具:gson   (google) 、json-lib、fastJson (alibaba)   1. 準備工作:        &nbs

Android下的檔案系統procsys(一)

Linux層有公共目錄。例如ps命令可以看到所有執行的程序資訊(程序的UID,PID,記憶體,CPU等資訊)。大多數資源由兩個虛擬的檔案系統提供: proc filesystem(procfs) :包括記憶體,CPU,網路等 sys filesystem(sysfs):裝置驅動,網路環境(/sys/class

Ubuntu下專案管理工具DiaPlanner

一直在widnows下編碼,新鮮一下,試在ubuntu下開發。現將開發經驗share出來,但願能給初學者一些幫助。 簡單介紹一下ubuntu下的UML建模工具,以及專案進度控制工具 1. viso PK dia 在ubuntu下,dia可以完成viso在Window

款 Mac 上知名的防休眠工具Caffeine Amphetamine

標簽頁 enter 程序 屏幕 retina nes 設計 系統 tac 本文標簽: Mac效率工具 Mac小工具 Caffeine Amphetamine Mac 在停止操作一段時間之後會進入休眠狀態。倘若在演示 Keynote 時突遭黑屏,或者在播放電影中忽然罷工,都

Http02App 整合工具類實現下載文件

圖片保存 完成 created reat ace sound trac per out Http02App.java1.使用兩個工具類 實現下載音樂和圖片到本地硬盤中package main;import Http.FileUtils;import Http.HttpUti

Android Json解析Kotlin

style any ray code 鍵值 first aaa use text      1. 首先講一下什麽是Json--下面的就是Json基本格式,其實就是一個鍵值對。 { "people": [ { "firstName": "Brett", "lastNam

android json 解析 kotlin

spa hashmap 函數 三方庫 col msg arraylist 字符串 comm   前面 寫了一次 kotlin解析json 但是,真的寫得太爛,直接刪掉了,現在重新整理一下。順便記錄一下今天坑了我很久的小問題。   1.首先從最簡單的入手吧