GSON:
Gson是google開發的json格式解析包,其特色是在解析json以前必須知道所傳輸的json數據格式,並定義一系列層次結構與json層次結構相同的類。換句話說,若是傳輸的json結構爲:java
{ "name":"relin", "sex":"male", "age":26 }
那麼,就必須預先定義一個成員變量名字與json中屬性名字徹底相同的類:json
class Person { public String name; public String sex; public int age; }
Gson解析json有三個特色:數組
- 若是預先定義的類中不包含json中的某個屬性,則該屬性就不會被解析出來,可是其餘成員仍然能正常解析
- 命名必須徹底相同,不然不會被正常解析
- 類的成員變量能夠是public,也能夠是private
讓咱們來看兩個簡單的解析與反解析過程:ide
1. 定義類:this
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:google
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:spa
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. 調用能夠以下所示:code
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 是一個final類,繼承了Object,實現了JSON接口對象
構造方法以下:繼承
JSONObject();建立一個空的JSONObject對象
JSONObject(boolean isNull);建立一個是否爲空的JSONObject對象
普通方法以下:
fromBean(Object bean);靜態方法,經過一個pojo對象建立一個JSONObject對象
fromJSONObject(JSONObject object);靜態方法,經過另一個JSONObject對象構造一個JSONObject對象
fromJSONString(JSONString string);靜態方法,經過一個JSONString建立一個JSONObject對象
toString();把JSONObject對象轉換爲json格式的字符串
iterator();返回一個Iterator對象來遍歷元素
其中包含有個主要的類:
1.JSONObject至關與json中的字典類型
2.JSONArray至關與json中的數組類型
基本用法以下:
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JSONObjectSample { //建立JSONObject對象 private static JSONObject createJSONObject(){ JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "kevin"); jsonObject.put("Max.score", new Integer(100)); jsonObject.put("Min.score", new Integer(50)); jsonObject.put("nickname", "picglet"); return jsonObject; } public static void main(String[] args) { JSONObject jsonObject = JSONObjectSample.createJSONObject(); //輸出jsonobject對象 System.out.println("jsonObject==>"+jsonObject); //判讀輸出對象的類型 boolean isArray = jsonObject.isArray(); boolean isEmpty = jsonObject.isEmpty(); boolean isNullObject = jsonObject.isNullObject(); System.out.println("isArray:"+isArray+" isEmpty:"+isEmpty+" isNullObject:"+isNullObject); //添加屬性 jsonObject.element("address", "swap lake"); System.out.println("添加屬性後的對象==>"+jsonObject); //返回一個JSONArray對象 JSONArray jsonArray = new JSONArray(); jsonArray.add(0, "this is a jsonArray value"); jsonArray.add(1,"another jsonArray value"); jsonObject.element("jsonArray", jsonArray); JSONArray array = jsonObject.getJSONArray("jsonArray"); System.out.println("返回一個JSONArray對象:"+array); //添加JSONArray後的值 //{"name":"kevin","Max.score":100,"Min.score":50,"nickname":"picglet","address":"swap lake", //"jsonArray":["this is a jsonArray value","another jsonArray value"]} System.out.println(jsonObject); //根據key返回一個字符串 String jsonString = jsonObject.getString("name"); System.out.println("jsonString==>"+jsonString); //解析一個json對象(能夠解析不一樣類型的數據) jsonObject = getJSONObject("{d:test,e:true,b:1.1,c:1,a:1}"); System.out.println(jsonObject); //{"d":"test","e":true,"b":1.1,"c":1,"a":1} System.out.println(jsonObject.getInt("a")); System.out.println(jsonObject.getDouble("b")); System.out.println(jsonObject.getLong("c")); System.out.println(jsonObject.getString("d")); System.out.println(jsonObject.getBoolean("e")); } public static JSONObject getJSONObject(String str) { if (str == null || str.trim().length() == 0) { return null; } JSONObject jsonObject = null; try { jsonObject = new JSONObject(str); } catch (JSONException e) { e.printStackTrace(System.err); } return jsonObject; } }