茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729598 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_224878.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [轉貼]Fastjson API 中文版

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]fastJson 在 java 後台轉換 json 格式數據探究

fastJson在java後台轉換json格式數據探究(一)

2012年12月28日 13:44:46 長安散人 閱讀數:63213

什麼事 JSON?

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一個子集。 JSON 採用完全獨立於語言的文本格式,但是也使用了類似於 C 語言家族的習慣(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。 這些特性使 JSON 成為理想的數據交換語言。

現在我們就來研究一下 fastJson

Fastjson是國內著名的電子商務互聯網公司阿里巴巴內部開發的用於 java 後台處理 json 格式數據的一個工具包,包括 序列化 反序列化 兩部分,它具備如下特徵:

1 .速度最快,測試表明, fastjson
具有極快的性能,超越任其他的 java json parser 。包括自稱最快的 jackson

2 .功能強大,完全支持 java bean 、集合、 Map 、日期、 Enum ,支持范型,支持自省。

3 .無依賴,能夠直接運行在 Java SE 5.0 以上版本

4 .支持 Android

5 .開源 (Apache 2.0)

這是 fastJson 的網址: http://code.alibabatech.com/wiki/display/FastJSON/Overview

其中包含了 json 數據處理的教程, jar 下載地址, example 樣例等。


下面給出fastJson處理json數據格式的代碼樣例:


package fastJson.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class FastJsonTest
{
/**
* 序列化
*/
public void toJsonString()
{
User user = new User("testFastJson001", "maks", 105);
String text = JSON.toJSONString(user);
System.out.println("toJsonString()方法:text=" + text);
// 輸出結果:text={"age":105,"id":"testFastJson001","name":"maks"}
}
/**
* 反序列化為json對像
*/
public void parseJsonObject()
{
String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
JSONObject json = JSON.parseObject(text);
System.out.println("parseJsonObject()方法:json==" + json);
// 輸出結果:json=={"age":105,"id":"testFastJson001","name":"maks"}
}
/**
* 反序列化為javaBean對像
*/
public void parseBeanObject()
{
String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
User user = (User) JSON.parseObject(text, User.class);
System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());
// 輸出結果:user==testFastJson001,maks,105
}
/**
* 將javaBean轉化為json對像
*/
public void bean2Json()
{
User user = new User("testFastJson001", "maks", 105);
JSONObject jsonObj = (JSONObject) JSON.toJSON(user);
System.out.println("bean2Json()方法:jsonObj==" + jsonObj);
// 輸出結果:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
}
/**
* 全序列化 直接把java bean序列化為json文本之後,能夠按照原來的類型反序列化回來。支持全序列化,需要打開SerializerFeature.WriteClassName特性
*/
public void parseJSONAndBeanEachother()
{
User user = new User("testFastJson001", "maks", 105);
SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };
String text = JSON.toJSONString(user, featureArr);
System.out.println("parseJSONAndBeanEachother()方法:text==" + text);
// 輸出結果:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
User userObj = (User) JSON.parse(text);
System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());
// 輸出結果:userObj==testFastJson001,maks,105
}
public static void main(String[] args)
{
FastJsonTest test = new FastJsonTest();
// 序列化
test.toJsonString();
// 反序列化為json對像
test.parseJsonObject();
// 反序列化為javaBean對像
test.parseBeanObject();
// 將javaBean轉化為json對像
test.bean2Json();
// 全序列化
test.parseJSONAndBeanEachother();
}
}
控制台輸出結果:


parseJsonObject()方法:json=={"age":105,"id":"testFastJson001","name":"maks"}
parseBeanObject()方法:user==testFastJson001,maks,105
bean2Json()方法:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
parseJSONAndBeanEachother()方法:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
parseJSONAndBeanEachother()方法:userObj==testFastJson001,maks,105


附:javaBean類User.java


package fastJson.test;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String name;
private int age;
public User() {
super();
}
public User(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}



原文出處:fastJson在java后台转换json格式数据探究(一) - hu_shengyang的专栏 - CSDN博客
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|