fastJson简单使用

参考网址:
https://www.w3cschool.cn/fastjson/fastjson-api.html

序列化API:

package com.alibaba.fastjson;

public abstract class JSON {
// 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean
public static String toJSONString(Object object, SerializerFeature… features);

// 将Java对象序列化为JSON字符串,返回JSON字符串的utf-8 bytes
public static byte[] toJSONBytes(Object object, SerializerFeature... features);

// 将Java对象序列化为JSON字符串,写入到Writer中
public static void writeJSONString(Writer writer, 
                                   Object object, 
                                   SerializerFeature... features);

// 将Java对象序列化为JSON字符串,按UTF-8编码写入到OutputStream中
public static final int writeJSONString(OutputStream os, // 
                                        Object object, // 
                                        SerializerFeature... features);

}
JSON字符串反序列化API
package com.alibaba.fastjson;

public abstract class JSON {
// 将JSON字符串反序列化为JavaBean
public static T parseObject(String jsonStr,
Class clazz,
Feature… features);

// 将JSON字符串反序列化为JavaBean
public static  T parseObject(byte[] jsonBytes,  // UTF-8格式的JSON字符串
                                Class clazz, 
                                Feature... features);

// 将JSON字符串反序列化为泛型类型的JavaBean
public static  T parseObject(String text, 
                                TypeReference type, 
                                Feature... features);

// 将JSON字符串反序列为JSONObject
public static JSONObject parseObject(String text);

}

fastjson处理日期:

fastjson处理日期的API很简单,例如:
JSON.toJSONStringWithDateFormat(date, “yyyy-MM-dd HH:mm:ss.SSS”)

使用ISO-8601日期格式
JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);

全局修改日期格式
JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;
JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

反序列化能够自动识别如下日期格式:
ISO-8601日期格式
yyyy-MM-dd
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm:ss.SSS
毫秒数字
毫秒数字字符串
.NET JSON日期格式
new Date(198293238)

fastjson-filter:


	User user = new User("lcf", "m", 1.80, 24, new Date(), 80.1);
	SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
	Set<String> excludeSet = new HashSet<String>();
	excludeSet.add("name");
	excludeSet.add("birthday");

	filter.getIncludes().addAll(excludeSet);// 包含

	// filter.getExcludes().addAll(excludeSet);//排除

	String string = JSON.toJSONString(user, filter);
	System.err.println(string);
//{"birthday":1576809197005,"name":"lcf"}

一些例子:

依赖:

		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>fastjsonartifactId>
			<version>1.2.54version>
		dependency>

实体类:

/**
 * @author : lichenfei 
 * @date : 2018年12月20日
 * @time : 下午3:46:07  
 *
 */
package com.lcf.entity;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * @author : lichenfei
 * @date : 2018年12月20日
 * @time : 下午3:46:07
 *
 */
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private Date birthday;
    private String sex;
}

测试类:

/**
 * @author : lichenfei 
 * @date : 2019年1月3日
 * @time : 上午10:09:42  
 *
 */
package com.lcf.test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.lcf.entity.User;

/**
 * @author : lichenfei
 * @date : 2019年1月3日
 * @time : 上午10:09:42
 *
 */
public class FastJsonDemo {

    /*
     * java bean转--->json(序列化为json字符串)
     */
    @Test
    public void method1() {
	List<User> list = new ArrayList<User>();
	User user = new User("lcf", 24, new Date(), null);// null值会忽略输出
	list.add(user);
	String jsonString = JSON.toJSONStringWithDateFormat(list, "yyyy-MM-dd HH:mm:ss");// JSON.toJSONString(list,SerializerFeature.WriteDateUseDateFormat);//设置日期格式并输出
	System.out.println(jsonString);
	//输出:[{"age":24,"birthday":"2019-01-03 11:00:38","name":"lcf"}]
    }
    
    /*
     * java bean转--->json(序列化为json字符串)到文件
     */
    @Test
    public void method2() throws IOException {
	User user = new User("lcf", 24, new Date(), "M");
	File file = new File("src/main/resources/files");
	if (!file.exists()) {
	    file.mkdirs();
	}
	OutputStream out = new FileOutputStream(file+"/jsonString.txt");
	JSON.writeJSONString(out, user);
    }
    
    /*
     * Json字符串---》反序列化为bean对象 
     */
    @Test
    public void method3() {
	String jsonStr = "{\"age\":24,\"birthday\":1546485213902,\"name\":\"lcf\",\"sex\":\"M\"}";
	User user = JSON.parseObject(jsonStr, User.class);
	System.out.println(user.toString());
	//输出:User(name=lcf, age=24, birthday=Thu Jan 03 11:13:33 CST 2019, sex=M)
    }
    
    /*
     * Json字符串---》反序列化为JSONObject对象 
     */
    @Test
    public void method4() {
	String jsonStr = "{\"age\":24,\"birthday\":1546485213902,\"name\":\"lcf\",\"sex\":\"M\"}";
	JSONObject jsonObject = JSON.parseObject(jsonStr);
	System.out.println(jsonObject.getString("age"));
	//输出:24
    }
    
   /*
    * fastJson注解:
    * @JSONField(ordinal =0) :序列话字符串字段的先后顺序
    * @JSONField(name = "") :序列化字段的别名
    * @JSONField(format = "") : 序列化字段的日期格式设置     eg:@JSONField(format = "yyyy-MM-dd HH:mm:ss")
    * @JSONField(serialize = 布尔类型) : 设置是否进行序列化输出,默认是true
    * @JSONField(deserialize = 布尔类型) : 设置是否进行反序列化,默认是true
    * 更多JSONField参考:
    *  		https://www.w3cschool.cn/fastjson/fastjson-jsonfield.html
    * 
    */
    
}

你可能感兴趣的:(fastJson简单使用)