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")); } }
时间: 2024-10-07 10:54:11