您的位置:首页 > Web前端 > JavaScript

fastjson的简单学习

2014-11-30 15:40 417 查看
package com.hanchao.testFastJson;

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

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/***********************
* 阿里的FastJson的简单学习
* @author:han
* @version:1.0
* @created:2014-11-30
***********************
*/
public class TestFastJson {

/**
一、阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,
它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任何其他的
java Json parser 。包括自称最快的Jackson;功能强大,完全支持
Java Bean 、集合 、Map 、 日期 、 Enum ,支持泛型,支持自省;
无依赖 ,能够直接运行在Java SE5.0以上的版本;支持Andriod;
开源(Apache 2.0)

//下面是FastJson的简介:常用的方法!
//  Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
//  public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
//  public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
//  public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
//  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
//  public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
//  public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
//  public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
//  public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.46</version>
</dependency>

参考文章: http://blog.csdn.net/djun100/article/details/24237371 http://www.open-open.com/lib/view/open1405608707281.html

*/

public static void main(String[] args) {
//1.将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
fastJsonTest1();

//2.将Json文本转换为JavaBean对象。
fastJsonTest2();

//3.将Map类型的数据转为Json字符串
fastJsonTest3();

//4.含有数组的json字符串,如何处理
fastJsonTest4();

//5.将javabean转为json对象
fastJsonTest5();
}

/**
* 将javabean转为json对象
*
* 2014-11-30
* @author : hanchao
*/
private static void fastJsonTest5() {
Weibo weibo = new Weibo("0310","洛阳");

//转为JSon
JSONObject json = (JSONObject) JSON.toJSON(weibo);
System.out.println(json.get("id"));
}

/**
* 含有数组的json字符串
*
* 2014-11-30
* @author : hanchao
*/
private static void fastJsonTest4() {
User user1 = new User();
user1.setId(1);
user1.setName("hanchao");

User user2 = new User();
user2.setId(2);
user2.setName("xiweiyuan");

User user3 = new User();
user3.setId(3);
user3.setName("tom");

Group group = new Group();
group.setId(1);
group.setName("love");
group.getList().add(user1);
group.getList().add(user2);
group.getList().add(user3);

String json = JSON.toJSONString(group);
System.out.println(json);
//{"id":1,"list":[{"id":1,"name":"hanchao"},{"id":2,"name":"xiweiyuan"},{"id":3,"name":"tom"}],"name":"love"}

//下面我要处理上面的json字符串 ★
JSONObject object = JSON.parseObject(json);
System.out.println("id : " + object.getIntValue("id"));
System.out.println("name : " + object.getString("name"));

/*		Object jsonArray = object.get("list");
System.out.println("jsonArray : " + jsonArray);
List<User> list = JSON.parseArray(jsonArray+"",User.class); //★
*/

//或者
String jsonArray = object.getString("list");
System.out.println("jsonArray : " + jsonArray);
List<User> list = JSON.parseArray(jsonArray+"",User.class);

for (User user : list) {
System.out.println("id:" + user.getId() + ", name:" + user.getName());
}

//处理方法2.我们不知道数组里是一个什么样的javabean ★
JSONArray jsonArray2 = object.getJSONArray("list");
System.out.println("jsonArray2:" + jsonArray2);
for (int i = 0; i < jsonArray2.size(); i++) {
System.out.println("id : " + jsonArray2.getJSONObject(i).getIntValue("id")); //★
System.out.println(" name : " + jsonArray2.getJSONObject(i).getString("name"));
}
}

/**
* 将Map类型的数据转为Json字符串
*
* 2014-11-30
* @author : hanchao
*/
private static void fastJsonTest3() {

User user1 = new User();
user1.setId(2);
user1.setName("user1");

User user2 = new User();
user2.setId(3);
user2.setName("user2");

Group group = new Group();
group.setId(1);
group.setName("hanchao");
group.getList().add(user1);
group.getList().add(user2);

Map<Integer, Object> map = new HashMap<Integer, Object>();
map.put(1, "No.1");
map.put(2, "No.2");
map.put(3, group.getList());

String jsonString = JSON.toJSONString(map);
System.out.println(jsonString);
//{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]}

String jsonString2 = JSON.toJSONString(group);
System.out.println(jsonString2);
//{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"hanchao"}

}

/**
* 将Json文本数据转换为JavaBean数据。
* 需要注意的是:json字符串中的“键名”必须和JavaBean中的
* 字段名称一样!键中没有的在这个JavaBean中就显示为null.
*
*
* 2014-11-30
* @author : hanchao
*/
private static void fastJsonTest2() {
String str = "{\"id\":\"123\",\"city\":\"北京\"}";
//一个简单方便的方法将Json文本信息转换为JsonObject对象的同时转为JavaBean对象!
Weibo weibo = JSON.parseObject(str,Weibo.class);
System.out.println(weibo.getId() + " , " + weibo.getCity());
}

/**
* 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
*
* 2014-11-30
* @author : hanchao
*/
private static void fastJsonTest1() {
String str = "{\"name\":\"hanchao\"}";
//json字符串转为Json对象
JSONObject object = JSON.parseObject(str);
System.out.println(object);
System.out.println(object.get("name"));
}

}


本文出自 “我的JAVA世界” 博客,请务必保留此出处http://hanchaohan.blog.51cto.com/2996417/1584759
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: