Java下json的解析方法-----GSON與JSONObject

來源:互聯網
上載者:User
GSON:

         Gson是google開發的json格式解析包,其特點是在解析json之前必須知道所傳輸的json資料格式,並定義一系列階層與json階層相同的類。換句話說,如果傳輸的json結構為:

{    "name":"relin",    "sex":"male",    "age":26}
那麼,就必須預先定義一個成員變數名字與json中屬性名稱字完全相同的類:

class Person {    public String name;    public String sex;    public int age;}

Gson解析json有三個特點:       如果預先定義的類中不包含json中的某個屬性,則該屬性就不會被解析出來,但是其他成員仍然能正常解析       命名必須完全相同,否則不會被正常解析       類的成員變數可以是public,也可以是private

讓我們來看兩個簡單的解析與反解析過程:

1. 定義類:

package com.relin.gson.data;public class Person {private String name;    private int age;    private int sex;/**     * @return the name     */    public String getName() {return name+"*****";    }    /**     * @param name the name to set     */   public void setName(String name) {  this.name = name;  }    /**     * @return the age     */    public int getAge() {        return age;    }    /**     * @param age the age to set     */    public void setAge(int age) { this.age = age;    }        @Override    public String toString() {return name + ":" + age;  }}

2. String to json:

private static boolean StringToJson(){try{String str = "{\"name\":\"name0\",\"age\":0}";Gson gson = new Gson();Person person= gson.fromJson(str, Person.class);System.out.println(person);} catch (Exception e){return false;}return true;}

3. Json to String:

private static boolean JsonToString(){try{Gson gson = new Gson();ArrayList<Person> persons = new ArrayList<Person>();for (int i = 0; i < 10; i++) {Person p = new Person();     p.setName("name" + i);     p.setAge(i * 5);     persons.add(p);}String str = gson.toJson(persons);System.out.println(str);} catch (Exception e){return false;}return true;}

4. 調用可以如下所示:

package com.relin.gson;import java.util.ArrayList;import com.google.gson.Gson;import com.relin.gson.data.Person;import com.relin.gson.data.UrlResponse;public class Example {private static boolean JsonToString(){try{Gson gson = new Gson();ArrayList<Person> persons = new ArrayList<Person>();for (int i = 0; i < 10; i++) {Person p = new Person();     p.setName("name" + i);     p.setAge(i * 5);     persons.add(p);}String str = gson.toJson(persons);System.out.println(str);} catch (Exception e){return false;}return true;}
private static boolean StringToJson(){try{String str = "{\"name\":\"name0\",\"age\":0}";Gson gson = new Gson();Person person= gson.fromJson(str, Person.class);System.out.println(person);} catch (Exception e){return false;}return true;}
public static void main(String agrs[]){StringToJson();
                JsonToString()
        }}
 

JSONObject

另一種用與解析json的java api是來自org.json。用其相對比較直觀,其中包含有個主要的類: JSONObject相當與json中的字典類型 JSONArray相當與json中的數群組類型

基本用法如下:

            //將String字串轉換為json對象            JSONObject jsonObject = new JSONObject(strbody);            //提取int型的屬性,其屬性名稱為From,其他boolean等類型也類似            int from = jsonObject.getInt("From");            //提取json數組            JSONArray toData= jsonObject.getJSONArray("ToData");



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.