Fastjson 學習筆記
阿新 • • 發佈:2019-01-23
Fastjson
常用方法列表
public static Object parse(String text);
public static Object parse(String text, int features);
public static Object parse(String text, Feature... features);
public static JSONObject parseObject(String text, Feature... features);
public static JSONObject parseObject(String text );
public static <T> T parseObject(String text, TypeReference<T> type, Feature... features);
public static <T> T parseObject(String text, Class<T> clazz, Feature... features);
public static <T> T parseObject(String input, Type clazz, Feature... features);
public static <T> T parseObject(String text, Class<T> clazz);
public static JSONArray parseArray(String text);
public static <T> List<T> parseArray(String text, Class<T> clazz);
public static List<Object> parseArray(String text, Type[] types);
public static String toJSONString(Object object);
public static String toJSONString(Object object, SerializerFeature... features);
public static String toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature... features);
public static String toJSONString(Object object, boolean prettyFormat);
public static Object toJSON(Object javaObject);
public static <T> T toJavaObject(JSON json, Class<T> clazz);
示例程式碼(java 1.8)
main
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import java.util.List;
public class FastJsonDemo {
public static void main(String[] args){
singleBean();
ArrayBean();
losePropertitesBean();
addPropertitesBean();
complexBean();
genericType();
}
private static void genericType() {
System.out.println("---泛型bean演示---");
String json = "{\"t\":\"t\",\"u\":{\"id\":1,\"name\":\"name\"},\"value\":\"value\"}";
System.out.println(json);
GenericTypeJsonBean<String, JsonBean> parse = JSON
.parseObject(json, new TypeReference<GenericTypeJsonBean<String, JsonBean>>(){});
String t = parse.getT();
System.out.println(t.getClass().getName());
JsonBean u = parse.getU();
System.out.println(u.getClass().getName());
System.out.println(parse);
}
private static void complexBean() {
System.out.println("---複雜bean演示---");
String json = "{\"value\":\"value\",\"jsonBean\":{\"id\":1,\"name\":\"name\"}}";
System.out.println(json);
ComplexJsonBean parse = JSON.parseObject(json, ComplexJsonBean.class);
System.out.println(parse);
}
/**
* 允許缺少欄位
* 輸出 忽略為空欄位
*/
private static void losePropertitesBean() {
System.out.println("---缺失屬性演示---");
String json = "{\"id\":1}";
System.out.println("json-->"+json);
JSONObject jsonObject = JSON.parseObject(json);
System.out.println("jsonObject-->"+jsonObject);
JsonBean jsonBean = JSON.parseObject(json, JsonBean.class);
System.out.println("jsonBean-->"+jsonBean);
System.out.println("fastjson format-->"+JSON.toJSONString(jsonBean, true));
}
/**
* 允許未知欄位
* 輸出 忽略為空欄位
*/
private static void addPropertitesBean() {
System.out.println("---多出其他屬性演示---");
String json = "{\"id\":1, \"other\":\"othervalue\"}";
System.out.println("json-->"+json);
JSONObject jsonObject = JSON.parseObject(json);
System.out.println("jsonObject-->"+jsonObject);
JsonBean jsonBean = JSON.parseObject(json, JsonBean.class);
System.out.println("jsonBean-->"+jsonBean);
System.out.println("fastjson format-->"+JSON.toJSONString(jsonBean, true));
}
private static void ArrayBean() {
System.out.println("---連結串列演示---");
String json = "[{\"id\":1,\"name\":\"cs\"},{\"id\":2,\"name\":\"cs2\"}]";
System.out.println("json-->"+json);
List<JsonBean> jsonBeans = JSON.parseArray(json, JsonBean.class);
System.out.println("jsonBeans-->"+jsonBeans);
System.out.println("fastjson format-->"+JSON.toJSONString(jsonBeans, true));
}
private static void singleBean() {
System.out.println("---簡單bean演示---");
String json = "{\"id\":1,\"name\":\"cs\"}";
System.out.println("json-->"+json);
JSONObject jsonObject = JSON.parseObject(json);
System.out.println("jsonObject-->"+jsonObject);
JsonBean jsonBean = JSON.parseObject(json, JsonBean.class);
System.out.println("jsonBean-->"+jsonBean);
System.out.println("fastjson format-->"+JSON.toJSONString(jsonBean, true));
}
}
ComplexJsonBean
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ComplexJsonBean {
private String value;
private JsonBean jsonBean;
}
GenericTypeJsonBean
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GenericTypeJsonBean<T, U> {
private T t;
private U u;
private String value;
}
JsonBean
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString(of = {"id", "name"})
public class JsonBean {
private int id;
private String name;
}
pom
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
輸出結果
---簡單bean演示---
json-->{"id":1,"name":"cs"}
jsonObject-->{"name":"cs","id":1}
jsonBean-->JsonBean(id=1, name=cs)
fastjson format-->{
"id":1,
"name":"cs"
}
---連結串列演示---
json-->[{"id":1,"name":"cs"},{"id":2,"name":"cs2"}]
jsonBeans-->[JsonBean(id=1, name=cs), JsonBean(id=2, name=cs2)]
fastjson format-->[
{
"id":1,
"name":"cs"
},
{
"id":2,
"name":"cs2"
}
]
---缺失屬性演示---
json-->{"id":1}
jsonObject-->{"id":1}
jsonBean-->JsonBean(id=1, name=null)
fastjson format-->{
"id":1
}
---多出其他屬性演示---
json-->{"id":1, "other":"othervalue"}
jsonObject-->{"other":"othervalue","id":1}
jsonBean-->JsonBean(id=1, name=null)
fastjson format-->{
"id":1
}
---複雜bean演示---
{"value":"value","jsonBean":{"id":1,"name":"name"}}
ComplexJsonBean(value=value, jsonBean=JsonBean(id=1, name=name))
---泛型bean演示---
{"t":"t","u":{"id":1,"name":"name"},"value":"value"}
java.lang.String
com.cs.fastjson.JsonBean
GenericTypeJsonBean(t=t, u=JsonBean(id=1, name=name), value=value)