json與gson工具轉換案例及區別
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來靈活配置需要序列化的欄位。
相關文章
- Gson轉換與JSONObject區別JSONObject
- Eclipse安裝GSON,使用GSON轉換Java Object到JSONEclipseJavaObjectJSON
- Gson轉換 — json資料轉換為Object實體公共方法JSONObject
- (轉)CWnd與HWND的區別與轉換
- 【python】str與json型別轉換PythonJSON型別
- 自寫Json轉換工具JSON
- json 物件與json 字串的區別。JSON物件字串
- json與xml的區別JSONXML
- XHTML?它與 HTML的區別?如何轉換HTML
- 字串與日期型別轉換的工具類字串型別
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- Gson將json字串轉map導致int型被轉換成double的採坑之旅JSON字串
- Json 的日期格式與.Net DateTime型別的轉換JSON型別
- json字串與物件互相轉換JSON字串物件
- JSON字串與HashMap相互轉換JSON字串HashMap
- json與jsonp的區別JSON
- 型別轉換工具類型別
- [轉]Apache與Tomcat 區別及聯絡ApacheTomcat
- json解析效能比較(gson與jackson)JSON
- 如何使用JSON和GSONJSON
- Json解析之Gson庫JSON
- java型別轉換與強制型別轉換(轉)Java型別
- FastJson、Jackson、Gson進行Java物件轉換Json的細節處理ASTJSONJava物件
- Java與Json資料格式轉換JavaJSON
- 塊元素和行內元素的區別與轉換
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- 資料型別及轉換資料型別
- c#中Array,ArrayList 與List<T>的區別、共性與轉換C#
- Android Bitmap 與 Drawable之間的區別和轉換Android
- Java資料型別及型別轉換Java資料型別
- gson-plugin告別Json資料型別不一致(一)PluginJSON資料型別
- Json轉換(一)JSON
- Json轉換(二)JSON
- Json轉換(三)JSON
- XPM轉換與檢視工具
- Python 四種數值型別(int,long,float,complex)區別及轉換Python型別
- android使用Gson來解析jsonAndroidJSON
- 生成JSON資料--Gson(谷歌)方法JSON谷歌