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

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;
    }
}
相關文章
相關標籤/搜索