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");