alibaba的FastJson(高性能JSON开发包) json转换

http://www.oschina.net/code/snippet_228315_35122

 1 class User{
 2     private int id;
 3     private String name;
 4     public int getId() {
 5         return id;
 6     }
 7     public void setId(int id) {
 8         this.id = id;
 9     }
10     public String getName() {
11         return name;
12     }
13     public void setName(String name) {
14         this.name = name;
15     }
16 }  
 1 import java.util.ArrayList;
 2 import java.util.List;
 3
 4 class Group{
 5     private int id;
 6     private String name;
 7     private List<User> list = new ArrayList<User>();
 8     public int getId() {
 9         return id;
10     }
11     public void setId(int id) {
12         this.id = id;
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     public List<User> getList() {
21         return list;
22     }
23     public void setList(List<User> list) {
24         this.list = list;
25     }
26 } 
 1 class Weibo {
 2     private String id;
 3     private String city;
 4
 5     public Weibo(String id, String city) {
 6         this.id = id;
 7         this.city = city;
 8     }
 9
10     public Weibo() {
11     }
12
13     public String getId() {
14         return id;
15     }
16
17     public void setId(String id) {
18         this.id = id;
19     }
20
21     public String getCity() {
22         return city;
23     }
24
25     public void setCity(String city) {
26         this.city = city;
27     }
28 }  
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的简介:常用的方法!
//  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(和上面方法的区别是返回值是不一样的)  

/**
 * 这是关于FastJson的一个使用Demo,在Java环境下验证的;
 * 使用的时候可以参照这个例子进行回忆!
 * 备注:下面写的Json格式的数据"前面的\,意思是告诉编译器忽略掉它后面的"。
 * 后面定义有三个类:User、Group、Weibo
 * @author liuzhao
 */
public class JsonDemo {  

    public static void main(String[] args) {  

        json2JsonObjectM1();//将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
        json2BeanM2();//将Json文本数据转换为JavaBean数据!
        json2JSONArrayM3();//将json数据转化为JSONArray:
        json2JavaBeanM4();//将JSON文本转换为JavaBean的集合;转换为单纯的1个Object:parseObject(String text, Class<T> clazz);
        bean2JsonM5();//将JavaBean转换为Json格式的数据/Json文本 用户数据的传递:例如上传服务器
        bean2JSONObjectM6();//将JavaBean转换为JSON对象
        complexExampleM7();//一个相对复杂的例子:
        complex2JsonM8();//一个复杂的Object到Json的Demo
        complexMap2JsonM9();//将Map数据转换为JsonString的Demo;这个对RedBoy服务端不就直接破了嘛!
    }  

    /**
     * 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
     */
    private static void json2JsonObjectM1() {
        //一个JsonObject文本数据
        String s = "{\"name\":\"liuzhao\"}";
        //将JsonObject数据转换为Json
        JSONObject object = JSON.parseObject(s);
        //利用键值对的方式获取到值
        System.out.println(object.get("name"));
        /**
         * 打印:
         * liuzhao
         */
    }  

    /**
     * 将Json文本数据转换为JavaBean数据!
     * 需要注意的是:这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样!键中没有的在这个JavaBean中就显示为null!
     */
    private static void json2BeanM2() {
        String s = "{\"id\":\"0375\",\"city\":\"平顶山\"}";
        //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象!
        Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义
        System.out.println(weibo.getId());
        System.out.println(weibo.getCity());
        //打印的结果     0375
        //              平顶山
    }  

    /**
     * 将Map类型的数据转换为JsonString
     */
    private static void complexMap2JsonM9() {
        Group group = new Group();
        group.setId(1);
        group.setName("group");  

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

        User user2 = new User();
        user2.setId(3);
        user2.setName("user2");
        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"}]}
         */
    }  

    /**
     * 由一个复杂的Object到Json的Demo
     */
    private static void complex2JsonM8() {
        Group group = new Group();
        group.setId(1);
        group.setName("group");  

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

        User user2 = new User();
        user2.setId(3);
        user2.setName("user2");
        group.getList().add(user1);
        group.getList().add(user2);
        String jsonString = JSON.toJSONString(group);
        System.out.println(jsonString);
        /**
         *  输出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"}
         */
    }  

    /**
     * 一个相对复杂的例子:
     * JSON文本数据:
     *      首先是JSONObject,转换为JSONArray;
     *      然后将JSONArray转换为JavaBean
     */
    private static void complexExampleM7() {
        String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}"
                + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"},"
                + "{id:\"110000\",\"city\":\"#006北#005京市\"},"
                + "{id:\"110000\",\"city\":\"北#002京市\"},"
                + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}";  

        JSONObject object = JSON.parseObject(s);
        Object jsonArray = object.get("js");
        System.out.println(jsonArray);
        List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class);
        for (Weibo weibo : list) {
            System.out.println(weibo.getCity());
        }
    }  

    /**
     * 将JavaBean转换为JSON对象
     */
    private static void bean2JSONObjectM6() {
        Weibo weibo = new Weibo("0373", "洛阳");
        JSONObject json = (JSONObject) JSON.toJSON(weibo);
        System.out.println(json.get("id"));
        /**
         * 打印:
         * 0373
         */
    }  

    /**
     * 将JSON文本转换为JavaBean的集合;
     * 内部实现肯定是:首先转换为JSONArray,然后再转换为List集合
     */
    private static void json2JavaBeanM4() {
        String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";
        List<Weibo> list = JSON.parseArray(s, Weibo.class);
        for (Weibo weibo : list) {
            System.out.println(weibo.getCity());
        }
        /**
         * 打印:
         * 平顶山
         * 南阳
         */
    }  

    /**
     * 将json数据转化为JSONArray:
     * 注意:获取到JSONArray之后(我们这里只是获取到JSONArray而不是JavaBean的List集合)
     * 获取JSONArray中的数据转换为String类型需要在外边加"";
     */
    private static void json2JSONArrayM3() {
        String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";
        //将JSON文本转换为JSONArray
        JSONArray array = JSON.parseArray(s);
        //这行必须写:必须加上+"";不然会报出类型强转异常!
        String str = array.get(1)+"";
        System.out.println(array.get(0));
        JSONObject object = JSON.parseObject(str);
        System.out.println(object.get("id"));
        /**
         * {"city":"平顶山","id":"0375"}
            0377
         */
    }  

    /**
     * 将JavaBean转换为Json格式的数据/Json文本
     * 用户数据的传递:例如上传服务器
     */
    private static void bean2JsonM5() {
        Weibo weibo = new Weibo("123456", "上海");
        String string = JSON.toJSONString(weibo);
        System.out.println(string);
        /**
         * 打印:
         * {"city":"上海","id":"123456"}
         */
    }  

}
时间: 2024-11-07 23:37:39

alibaba的FastJson(高性能JSON开发包) json转换的相关文章

(转)FastJson---高性能JSON开发包

场景:javaBean对象转化为json对象! 1 Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发.1.遵循http://json.org标准,为其官方网站收录的参考实现之一.2.功能qiang打,支持JDK的各种类型,包括基本的JavaBean.Collection.Map.Date.Enum.泛型.3.无依赖,不需要例外额外的jar,能够直接跑在JDK上.4.开源,使用Apache License 2.0协议开源.http://code.al

FastJson---高性能JSON开发包

Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发.1.遵循http://json.org标准,为其官方网站收录的参考实现之一.2.功能qiang打,支持JDK的各种类型,包括基本的JavaBean.Collection.Map.Date.Enum.泛型.3.无依赖,不需要例外额外的jar,能够直接跑在JDK上.4.开源,使用Apache License 2.0协议开源.http://code.alibabatech.com/wiki/display

【Newtonsoft.Json】Window Phone Json解析开发包

WP从服务器.API交换数据一般都是用JSON格式字符串. 下面介绍用Newtonsoft.Json来处理JSON. 准备 1.到 http://json.codeplex.com/ 下载Newtonsoft.Json类库(Json45r10.zip). 2.解压引用Newtonsoft.Json.dll. 解析 目标JSON字符串: { "Name":"I", "Age":25," Family": [ { "Na

Android开发之JSON使用

Android开发之JSON使用 今天在论坛看到有不少朋友问关于json的问题,所以想写一篇关于android中使用json的博客. 首先 json是什么 JSON的全称是JavaScript Object Notation,从这里可以看到它源于JavaScript,它采用文本形式体现.比如 {"name":"zhangsan","age":20,"wife":"如花"} 这个简单表示了一个对象,在java

阿里巴巴fastjson 包的使用解析json数据

Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson.并且还超越了google的二进制协议protocol buf. 2.功能强大 支持各种JDK类型.包括基本类型.JavaBean.Collection.Map.Enum.泛型等. 3.无依赖 不需要例外额外的jar,能够直接跑在JDK上. 4

fastjson是阿里巴巴的开源JSON解析库

fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化 https://github.com/alibaba/fastjson/wiki/Quick-Start-CN fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path.详细代码如下: MainActivyty.java: package com.example.analysisjson; import android.os.Bundle; import android.a

SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web 设计时,我们还需要做一些优化来使得 SVG 变得更加轻量. 下面介绍的 20 个工具,可以帮助你快速有效的创建 SVG 图像.现有的在线工具已经可以帮助我们进行优化.转换.新建模式等工作. 更详细的介绍,参见:How To Create SVG Animation Using CSS 交互式 SVG

JSON.parseObject 和 JSON.toJSONString

JSON.parseObject,是将Json字符串转化为相应的对象:JSON.toJSONString则是将对象转化为Json字符串.在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法. 首先用maven引入fastjson: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.ap