FastJSON 使用案例

简介

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍
JSON帮助类 这个可以做一个实例研究代码,也可以作为一个工具类 去调用。
FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,Fastjson是一个Java语言编写的高性能功能完善的JSON库。Fastjson支持java bean的直接序列化。
可以使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库。
FastJson速度最快,fastjson具有极快的性能,超越任其他的Java Json parser。
FastJson功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖。
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.7</version>
        </dependency>

SerializerFeature属性

QuoteFieldNames	                   输出key时是否使用双引号,默认为true	
UseSingleQuotes                    使用单引号而不是双引号,默认为false	
WriteMapNullValue	               是否输出值为null的字段,默认为false	
WriteEnumUsingToString	           Enum输出name()或者original,默认为false	
UseISO8601DateFormat	           Date使用ISO8601格式输出,默认为false	
WriteNullListAsEmpty	           List字段如果为null,输出为[],而非null	
WriteNullStringAsEmpty	           字符类型字段如果为null,输出为”“,而非null	
WriteNullNumberAsZero              数值字段如果为null,输出为0,而非null	
WriteNullBooleanAsFalse	           Boolean字段如果为null,输出为false,而非null	
SkipTransientField	               如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true	
SortField	                       按字段名称排序后输出。默认为false	
WriteTabAsSpecial	               把\t做转义输出,默认为false	不推荐
PrettyFormat	                   结果是否格式化,默认为false	
WriteClassName	                   序列化时写入类型信息,默认为false。反序列化是需用到	
DisableCircularReferenceDetect	   消除对同一对象循环引用的问题,默认为false	
WriteSlashAsSpecial	               对斜杠’/’进行转义	
BrowserCompatible	               将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false	
WriteDateUseDateFormat	           全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);	
DisableCheckSpecialChar            一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false	
NotWriteRootClassName	           含义	
BeanToArray	                       将对象转为array输出	
WriteNonStringKeyAsString	       含义	
NotWriteDefaultValue	           含义	
BrowserSecure	                   含义	
IgnoreNonFieldGetter	           含义	
WriteEnumUsingName                 含义
Fastjson中的经常调用的方法:

Fastjson中的经常调用的方法:

1 public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
2 public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
3 public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
4 public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
5 public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
6 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
8 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

在需要解析JSON的Response中,需要导入如下四个包。

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;

开始代码

UserInfo

import java.io.Serializable;
public class UserInfo implements Serializable {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

Text

import java.util.ArrayList;
import java.util.Date;
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;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class Text {
	//测试执行
	public static void main(String[] args){
		UserInfo info=new UserInfo();
		info.setName("zhangsan");
		info.setAge(24);
		//将对象转换为JSON字符串
		String strJson=JSON.toJSONString(info);
		//System.out.println("JSON="+strJson);
		Text.text1();
		//Text.test3();
		//Text.test4();
		//Text.test5();	
	}
	//放List 对象
	public static  void text1(){
		JSONObject object = new JSONObject();  
		List<UserInfo> users = new ArrayList<UserInfo>();  
		for (int i = 0; i < 3; i++) {  
			UserInfo u = new UserInfo();  
			u.setAge(i + 18);  
			u.setName(i % 2 == 0 ? "男" : "女");  
			users.add(u);  		
		}  
		object.put("list", users); // List
		//获取List
		JSONArray array = object.getJSONArray("list");  
		for (int i = 0; i < array.size(); i++) {  
			UserInfo user2 = JSON.toJavaObject(array.getJSONObject(i), UserInfo.class);  
		    System.out.println(user2.getName()+user2.getAge());  
		}  	
	}
	//这是放Sring 类型
	public static  void text2(){
		Map<String, Object> map = new HashMap<String, Object>();  
		map.put("名字:", "二爷");  
		map.put("账号:", "55555");  
		map.put("公司:", "5555555555");	
		map.get("名字:");
		JSONObject object1 = new JSONObject(map); // 测试创建JSONObject  
		System.out.println(object1.toJSONString());
	}
	//接受
	public static void test3(){
		String json="{\"name\":\"chenggang\",\"age\":24}";
		//反序列化
		UserInfo userInfo=JSON.parseObject(json,UserInfo.class);
		System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());
	}

	public static void test4(){
		String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";
		//TypeReference获取或设置代码类型引用选项。
		Map<String, UserInfo> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfo>>(){});
		System.out.println(map.get("user").getName());
	}
	public static void test5(){
		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));
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值