1. 程式人生 > >Android用GSon處理Json資料

Android用GSon處理Json資料

//轉換器
        GsonBuilder builder = new GsonBuilder(); 
        // 不轉換沒有 @Expose 註解的欄位 
        builder.excludeFieldsWithoutExposeAnnotation();
        Gson gson = builder.create(); 
        
        //1、物件轉string
        Student stu = new Student();
        stu.setStudentId(333);
        stu.setStudentName("qqq");
        String stuStr = gson.toJson(stu);
        System.out.println(stuStr); //{"studentName":"qqq","studentId":333}
        
        
        //2、string轉物件
        Student user2 = gson.fromJson(stuStr, Student.class); 
        System.out.println(user2); 
        String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";
        Student user4 = gson.fromJson(stuTemp, Student.class); 
        System.out.println(user4); 

        //3、物件List轉string
        List<Student> testBeanList = new ArrayList<Student>(); 
        Student testBean = new Student(); 
        testBean.setStudentId(555);
        testBean.setStudentName("552");
        testBeanList.add(testBean); 
        
        //Gson gsonList = new Gson(); 
        Type type = new TypeToken<List<Student>>(){}.getType();  //指定集合物件屬性
        String beanListToJson = gson.toJson(testBeanList, type); 
        System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}] 

        //集合string轉物件list
        List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type); 
        System.out.println(testBeanListFromJson); //[555:552]

        //4、集合如果不指定型別 預設為String
        List<String> testList = new ArrayList<String>(); 
        testList.add("first"); 
        testList.add("second"); 
        String listToJson = gson.toJson(testList); 
        System.out.println(listToJson); //["first","second"] 
        
        //5、集合字串轉回來需要指定型別
        List<String> testList2 = (List<String>) gson.fromJson(listToJson, 
          new TypeToken<List<String>>() { 
          }.getType()); 
        System.out.println(testList2); 

        //6、 將HashMap字串轉換為 JSON 
        Map<String, String> testMap = new HashMap<String, String>(); 
        testMap.put("id", "id.first"); 
        testMap.put("name", "name.second"); 
        String mapToJson = gson.toJson(testMap); 
        System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}
        //7、stringMap轉物件
        Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson, 
                new TypeToken<Map<String, String>>() { 
            }.getType()); 
        System.out.println(userMap2); //{id=id.first, name=name.second} 

        //8、物件含有普通物件、集合、map情況
        Student user1 = new Student(); 
        user1.setStudentId(1001); 
        user1.setStudentName("張三"); 
        
        Student user3 = new Student(); 
        user3.setStudentId(1002); 
        user3.setStudentName("李四"); 
        
        Map<String, Student> userMap = new HashMap<String, Student>(); 
        userMap.put("user1", user1); 
        userMap.put("user3", user3); 
        
        List<Student> userList = new ArrayList<Student>(); 
        userList.add(user1); 
        userList.add(user3); 
        
        Teacher groupBean = new Teacher(); 
        groupBean.setStudent(user1);
        groupBean.setStus(userList);
        groupBean.setMap((HashMap)userMap);
        //groupBean.setUserList(userList); 
        Gson gsonGroup = new Gson(); 

        String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() { 
            }.getType()); 
        System.out.println(sGroupBean); 
        /*{"stus":[{"studentName":"張三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"張三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"張三","studentId":1001}},"id":0,"age":0}*/

        //9、複雜物件string轉物件
        Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean, 
              new TypeToken<Teacher>() { 
              }.getType()); 
        System.out.println(groupBean2); 

package com.andtools;

import com.google.gson.annotations.Expose;

public class Student {
    @Expose
    private String studentName;
    @Expose
    private int studentId;
    public Student(){}
    public Student(int studentId,String studentName){
        this.setStudentId(studentId);
        this.setStudentName(studentName);
    }
    public String toString(){
        return this.getStudentId() + ":" + this.getStudentName();
    }
    public String getStudentName() {
        return studentName;
    }
    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
    public int getStudentId() {
        return studentId;
    }
    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }
    
}

package com.andtools;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.annotations.Expose;

public class Teacher {
    @Expose
    private int id;
    @Expose
    private String name;
    @Expose
    private int age;
    @Expose
    private Student student;
    @Expose
    private List stus;
    @Expose
    private HashMap map;
    public String toString(){
        return this.getId()+":"+this.getName()+":"+this.getAge() +":"+ this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Student getStudent() {
        return student;
    }
    public void setStudent(Student student) {
        this.student = student;
    }
    public List getStus() {
        return stus;
    }
    public void setStus(List stus) {
        this.stus = stus;
    }
    public HashMap getMap() {
        return map;
    }
    public void setMap(HashMap map) {
        this.map = map;
    }
    
}

相關推薦

AndroidGSon處理Json資料

//轉換器         GsonBuilder builder = new GsonBuilder();          // 不轉換沒有 @Expose 註解的欄位          builder.excludeFieldsWithoutExposeAnnotation();        

Android——使用Gson構建Json資料

一、導包 compile ‘com.google.code.gson:gson:2.8.2’ 二、構建json 1、第一種,構建如下json { "userArray":[ { "name":"s0"

gson處理json時bean和json串的對應關係

一開始以為bean和json串中的內容必須一一對應, 後來實踐可以不用一一對應: bean中如果少一些內容,則直接不解析這部分資料,只把bean中有的資料解析出來; json中如果少一些內容,則bean中多餘的部分將被填入空值; 但是需要注意的是: bean和json中的格

Android使用GSON解析JSON資料——以解析本省市區三級資料為例

一、認識一下JSON JSON的語法規則: 資料在名稱/值對中 資料由逗號分隔 物件在大括號中{} 陣列在中括號內[] 由此可以看出,JSON主要是由資料、物件和陣列組成的文字。他們之間的關係大概就是 物件由多個數據(名稱/值對)組成 物件可以包含陣列 陣列可

Gson處理json資料,轉換javaBean的時候,替換輸出欄位名,解析日期的坑

有的時候,我們輸出的json資料可能跟原始javabean不一樣。為了說明這個問題,舉例如下: package com.zhdw.mgrclient.test; import java.util.Date; public class Person {

Java gson生成json資料

{ "result": 1, "personData": [ { "name": "Tom Green", "age": 22, "url": "http

Android Gsonjson資料轉double 數值為0.0的問題

今天上午改需求 遇到一個奇葩的Bug   返回的為double 型別  於是在實體類裡寫private double space; get  set略。。。 但是顯示的時候為0.0  於是將實體類的double 改為String 

android Gson解析JSON資料中動態未知欄位key的方法

有時在解析json資料中的欄位key是動態可變的時候,由於Gson是使用靜態註解的方式來設定實體物件的,因此我們很難直接對返回的型別來判斷。但Gson在解析過程中如果不知道解析的欄位,就會將所有變數儲存在一個Map中,我們只要例項化這個map就能動態地取出key和value了。先給出一段js

Android-Gson解析JSON資料JSON物件/JSON陣列)

上一篇部落格,Android-解析JSON資料(JSON物件/JSON陣列),介紹了使用 org.json.JSONArray;/org.json.JSONObject; 來解析JSON資料;   Google Android 還提供來另外一種方式來解析JSON資料,那就是Gson;

Android之使用GSON解析JSON資料

GSON簡介: GSON是Google提供的用來在Java物件和JSON資料之間進行對映的Java類庫。GSON可以很容易的將一串JSON資料轉換為一個Java物件,或是將 一個Java物件轉換為相應的JSON資料。 使用GSON解析JSON資料的基本

Android中使用Gson解析JSON資料

在Android中可以使用Gson解析JSON資料 首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI: google-gson-1.7.1-release.zip 把gson-1.7.jar c

Android list 泛型 Gsonjson字串 出現 java.lang.StackOverflowError異常解決

 不廢話 第一次寫部落格,不知道怎麼寫,  直接進入主題 我來這最熟悉的程式碼 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

Android網路之資料解析----使用Google Gson解析Json資料

<span style="font-size:18px;">一、Json資料的介紹

拿來即C+JS結構來處理JSON資料

【面對的問題】         在物聯網產品的開發過程中,對JSON格式的資料處理是一個強需求,例如亞馬遜的 AWS IOT平臺,裝置與後臺之間的通訊資料都是JSON格式,先瞄一眼大概的樣子:     &n

gson解析json的問題

過去 成長 回老家 自然 把他 生命 電視 快餐 愛的 <p>  今天下了一天的雨,心情也像這天氣一樣,壓抑、沈悶。 以前每次在,屋子裏看著外面下雨,心理都特別的溫暖。小時候,每次下雨了,媽媽都會給我找出一件厚厚的衣服讓我穿上,然後我總會趴在炕上美美的看著電視。

Gson解析json資料

簡介: Json資料是類似xml型別的資料轉化格式但是它的傳輸速率遠遠高於xml的解析速率。 這裡簡單的對用gson解析json格式的資料,為什麼說是簡單的介紹呢,因為博主有更簡單的解析方式後期會進行推出或者掃描頭像進 行私聊(公眾號)。 進行整合:  這裡按照a

Gson實現json資料與物件, 集合之間的轉換

Gson是谷歌開源的用於處理json格式資料的工具. 使用Gson需要引入第三方jar包: package Exercise1_gson; import java.io.Serializable; /** * @author huangxinyi * 實體類product *

Python-使用jmespath來格式化處理json資料

在遇到json的過程中,我們會經常去做取JSON中某個值的操作,如果是用get方法去取比較繁瑣,這裡不妨使用jmespath更便捷的方法來解決。 下面通過程式碼來說明jmespath在python的使用: 一.安裝 pip install jmespth 二.查詢一個k

Android 解析服務端Json資料

文章目錄 1、簡介 1、簡介 通過網路訪問 ,獲取到服務端上Json 資料,然後對Json 資料進行解析,得到需要的資料。 待續····· 檔案參考: android 解析網

Go處理json資料

json資料格式 參見json資料格式說明。 如果沒操作過json資料,建議先看下上面的文章,有助於理解本文後面的內容。 Go json包 Marshal():Go資料物件 -> json資料 UnMarshal():Json資料 -> Go資料物件 func Marshal(v int