zoukankan      html  css  js  c++  java
  • 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"
               */
        }
    
    }
    
  • 相关阅读:
    HDU 1717 小数化分数2(最大公约数)
    C#计数器
    C#计数器
    c#计算器
    c#计算器
    PHP 错误与异常 笔记与总结(18 )页面重定向实现
    想使用 MongoDB ,你应该了解这8个方面!
    大数据代表未来,投资力度增强
    统计学和数据挖掘的异同探讨
    统计学和数据挖掘的异同探讨
  • 原文地址:https://www.cnblogs.com/boy1025/p/4716962.html
Copyright © 2011-2022 走看看