FastJson

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?
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON

如果你使用了Maven,maven repository配置如下:
<repository>
	<id>opensesame</id>
	<name>Alibaba OpenSource Repsoitory</name>
	<url>http://code.alibabatech.com/mvn/releases/</url>
	<snapshots>
		<enabled>false</enabled>
	</snapshots>
</repository>

pom.xml文件中加入依赖依赖:
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.0.4</version>
</dependency>

如果没有使用maven,可以直接下载:
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4.jar
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4-sources.jar


使用介绍:
Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON

import com.alibaba.fastjson.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的基本使用

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"
           */
    }

}

 

FastjsonFastjson2都是JSON库,用于处理JSON格式的数据。 Fastjson2是Fastjson项目的重要升级,旨在为未来十年提供高性能的JSON库。相比于原来的FastjsonFastjson2在性能上有了很大的提升,并且更加安全。它完全删除了autoType白名单,提升了安全性。 在使用上,导入Fastjson2的依赖后,与原来的Fastjson在代码上基本相同。唯一的区别是在Fastjson2中,将`jsonArray.toJavaList`方法转变为`jsonArray.toList`。 总结来说,FastjsonFastjson2都是用于处理JSON数据的库,但Fastjson2是Fastjson的升级版本,提供了更高的性能和更好的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [fastjson2 介绍及使用](https://blog.csdn.net/qq_33697094/article/details/128114939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Fastjson2你开始使用了吗?来看看源码解析](https://blog.csdn.net/chenxuyuana/article/details/125581066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值