FastJson的简单实用

一、FastJson的理解

在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。

常用一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。
FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持
http://json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等
还支持循环引用。
FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是
https://github.com/AlibabaTech/fastjson

一个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

FastJson是阿里巴巴工程师设计的

二、FastJson的基本使用

package cn.monster.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * FastJson对json数据的处理
 * @author monster
 * @date 2015-08-10
 * 
 *FastJson的常用用法
 *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。
 */
public class FastJson {
    public static void main(String[] args) {
            User user=new User();
            user.setName("monster");
            user.setAge(21);
            String json=JSON.toJSONString(user); //将数据解析成json数据
            System.out.println("JSON :" +json);
          
            User Asyuser=JSON.parseObject(json, User.class);
            System.out.println("User  "+Asyuser.getName());
        
        //数据--->json数据
        HashMap<String, Object> map=new HashMap<String, Object>();
        map.put("username"," monster");
        map.put("age", 24);
        map.put("sex","boy");
        
        HashMap<String,Object> temp=new HashMap<String,Object>();
        temp.put("name", "YY");
        temp.put("age", 21);
        temp.put("sex","girl");
        
        map.put("girlInfo", temp);  //--->把temp添加到map中,因为map这个对象的值的数据类型为Object
        
        List<String> list=new ArrayList<String>();
        list.add("爬山");
        list.add("骑车");
        list.add("旅游");
        map.put("hobby", list);
         
        //JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串
        String jsonString = JSON.toJSONString(map);   //双引号
        //String jsonString = JSON.toJSONString(map,   SerializerFeature.UseSingleQuotes); //-->单引号
        System.out.println("JSON=" + jsonString);  
    
        //输出结果如下
        /**
          * JSON={
                "sex": "boy",
                "username": " monster",
                "age": 24,
                "hobby": [
                    "爬山",
                    "骑车",
                    "旅游"
                ],
                "girlInfo": {
                    "sex": "girl",
                    "age": 21,
                    "name": "YY"
                }
            }
         */
        
        
        /**
         * json数据解析
          */
        String newJsonString="{\"name\":\"chenggang\",\"age\":24}"; 
         //反序列化 
         User userInfo=JSON.parseObject(newJsonString,User.class); 
         System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());  
         
         /**
           * 日期格式化
             */
          Date date=new Date();   
          //输出毫秒值 
          System.out.println(JSON.toJSONString(date)); 
          //默认格式为yyyy-MM-dd HH:mm:ss   
          System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat)); 
          //根据自定义格式输出日期  
          System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
          
          /**
           *   输出结果
             *   1439164604282
           *    "2015-08-10 07:56:44"
           *    "2015-08-10"
           */
    }

}

 

posted @ 2015-08-10 08:07  monsterLin  阅读(994)  评论(0编辑  收藏  举报
小弟博客地址迁移,欢迎戳这里查看新博客~