参考网址:
https://www.w3cschool.cn/fastjson/fastjson-api.html
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处理日期的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)
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
*
*/
}