1. 程式人生 > >Fastjson 學習筆記

Fastjson 學習筆記

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)