json與gson工具轉換案例及區別

y_keven發表於2015-05-22

1.net.sf.json:JSONObject 與JSONArray與JAVA其他型別相互轉換

package www.hudong.json;

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

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
*
* @Title: JsonConvert.java
* @Copyright: Copyright (c) 2005
* @Description: <br>
* <br>
*               json 轉換的工具
* @Created on 2015年5月22日 下午3:09:08
* @author yangkai
*/
public class JsonConvert {

    /**
     * map轉JSONObject
     *
     * @param message
     * @param success
     * @return
     */
    public static JSONObject message(String message, boolean success) {
        Map map = new HashMap();
        map.put("success", success);
        map.put("message", message);
        return JSONObject.fromObject(map);
    }

    /**
     * list轉JSONObject
     *
     * @param list
     * @return
     */
    public static JSONObject generate(List list) {
        Map map = new HashMap();
        map.put("totalProperty", list.size());
        map.put("root", list);
        return JSONObject.fromObject(map);
    }

    /**
     * object 轉JSONObject
     *
     * @param object
     * @param message
     * @param success
     * @return
     */
    public static JSONObject javabean2json(Object object, String message, boolean success) {
        Map map = new HashMap();
        map.put("success", success);
        map.put("message", message);
        map.put("data", object);
        return JSONObject.fromObject(map);
    }

    /**
     * map list 轉JSONObject
     *
     * @param list
     * @param total
     * @return
     */
    public static JSONObject objectcollect2json(List list, String total) {
        Map map = new HashMap();
        map.put("totalProperty", total);
        map.put("root", list);
        return JSONObject.fromObject(map);
    }

    /**
     * string 轉JSONArray
     *
     * @param str
     * @return
     */
    public static JSONArray getJSONArrayFormString(String str) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return JSONArray.fromObject(str);
    }

    /**
     * string 轉 JSONObject
     *
     * @param str
     * @return
     */
    public static JSONObject StringToJSONOBject(String str) {
        if (str == null || str.trim().length() == 0) {
            return null;
        }
        return JSONObject.fromObject(str);
    }
}

2.com.google.gson.Gson:gson轉換JAVA物件和list的案例

static Gson gson = new Gson();

public static void test1() throws ParseException {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Student student1 = new Student();
    student1.setId(1);
    student1.setName("CSDN部落格");
    student1.setBirthDay(new Date());
    student1.setTime(new Timestamp(format.parse("2014-05-05 05:05:05").getTime()));
    String s1 = gson.toJson(student1);
    Student student = gson.fromJson(s1, Student.class);

    Student student2 = new Student();
    student2.setId(2);
    student2.setName("楊凱");
    student2.setBirthDay(new Date());
    student2.setTime(new Timestamp(format.parse("2014-06-06 06:05:05").getTime()));

    List<Student> list = new ArrayList<Student>();
    list.add(student1);
    list.add(student2);
    String s2 = gson.toJson(list);

    List<Student> retList = gson.fromJson(s2, new TypeToken<List<Student>>() { }.getType());
    for (int i = 0; i < retList.size(); i++) {
        Student stu = retList.get(i);
        System.out.println(stu);
    }
}


3.二者的區別

        這裡只做簡單對比,更多的網上千羅永珍;下面幾點是筆者使用中發現的:

1).json  特指net.sf.json版本的,一些低版本和高版本共存的時候經常試程式出現不明所以的bug

2).net.sf.json 低版本的資料庫儲存中文的時候是utf-8編碼的字符集

3).net.sf.json 轉換List,對於複雜型別的轉換會出現問題

4).net.sf.json 對於日期的操作比較複雜,需要使用JsonConfig,比Gson和FastJson要麻煩多 

 

更多資料:http://www.cnblogs.com/kunpengit/p/4001680.html

4.json、gson、xml擴充套件介紹

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,易於閱讀和編寫,同時也易於機器解析和生成。同XML一樣是一種“傳輸格式”。JSON採用與程式語言無關的文字格式,便於資料傳輸、儲存、交換。(Json和Xml更多比較
Json和XMl相比,具有以下優點:

1. 資料格式比較簡單, 易於讀寫, 格式都是壓縮的, 佔用頻寬小,瀏覽器解析快
2. 易於解析這種語言, 客戶端JavaScript可以簡單的通過eval()進行JSON資料的讀取
3. 構造友好,支援多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等語言伺服器端語言, 便於伺服器端的解析
4. 在PHP世界, 已經有PHP-JSON和JSON-PHP出現了, 便於PHP序列化後的程式直接呼叫. PHP伺服器端的物件、陣列等能夠直接生JSON格式, 便於客戶端的訪問提取.
5. 因為JSON格式能夠直接為伺服器端程式碼使用, 大大簡化了伺服器端和客戶端的程式碼開發量, 但是完成的任務不變, 且易於維護
6.相當穩定。JSON 的附加內容將成為超集。

缺點:

1. 沒有XML格式這麼推廣的深入人心和使用廣泛, 沒有XML那麼通用性
2. JSON格式目前在Web Service中推廣還屬於初級階段。

而Gson 是 Google 提供的用來在 Java 物件和 JSON 資料之間進行對映的 Java 類庫。可以將一個 JSON 字串轉成一個 Java 物件,或者反過來。gson和其他現有java json類庫最大的不同時gson需要序列化得實體類不需要使用annotation來標識需要序列化得欄位,同時gson又可以通過使用 annotation來靈活配置需要序列化的欄位。

相關文章