fastjson使用說明文檔

前言

Json簡介

JSON全稱JavaScript Object Notation js對象標記語言,實際上就是符合JSON格式規範的字符串,全部的數據均可以轉換成JSON,而頁面和後臺程序直接經過String進行數據交互,當這些String符合JSON格式的話就會很快的被解析還原成本來的數據類型。java

在純Java環境中咱們也可使用Json來處理一些數據,例如對象的序列化,咱們可使用把對象轉化成Json在本地存儲。json

基本的Json數據格式

1.對象類型以及Map的Json格式是:{「key」:」value」,」key2」:」value」}數組

例如:ide

User u = new User();u.setUsername(「abc」);u.setPassword(「b」);性能

對象u轉化成Json以後爲:{「username」:」abc」,」password」:」b」}this

2.數組/list/set 的Json格式是:[元素1,元素2...]spa

例如:code

int[] a = {12,343,23,125,26};orm

數組a轉化成Json以後爲:[12,343,23,125,26]對象

User[] arrayUsers={u,u}

對象數組arrayUsers轉化成Json以後爲:[{「username」:」abc」,」password」:」b」},{「username」:」abc」,」password」:」b」}]

Fastjson簡介

fastjson 是一個性能很好的 Java 語言實現的 JSON 解析器和生成器,來自阿里巴巴的工程師開發。 主要特色:

  1. 快速FAST(比其它任何基於Java的解析器和生成器更快,包括jackson) 強大(支持普通JDK類包括任意Java Bean
  2. Class、Collection、Map、Date或enum) 零依賴(沒有依賴其它任何類庫除了JDK)

在使用中咱們只須要導入相關的jar包就能夠經過fastjson來對Json進行處理了。

Fastjson的使用

基本使用

  1. 導入jar包
  2. 使用相關的方法

本文中使用到的實體類以下

public class Userinfo {
	String name;
	int age;
	String sex;
	@Override
	public String toString() {
		return "Userinfo [name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
	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;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Userinfo() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Userinfo(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Userinfo(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
}
複製代碼

實體類轉爲Json

Userinfo info = new Userinfo("馬畫藤", 30,"男");
        String str_json = JSON.toJSONString(info); //
        System.out.println("實體轉化爲Json" + str_json);
複製代碼

運行結果爲:實體轉化爲Json{"age":30,"name":"馬畫藤","sex":"男"}

list轉Json

List<Userinfo> list = new ArrayList<Userinfo>();
        Userinfo userinfo1 = new Userinfo("lisi", 15);
        Userinfo userinfo2 = new Userinfo("wangwu", 16);
        list.add(userinfo1);
        list.add(userinfo2);
        String json = JSON.toJSONString(list, true);
        System.out.println("List集合轉json格式字符串 :" + json);
複製代碼

toJSONString方法後面的參數中的true表明是否格式化輸出結果,無論是true仍是fasle對結果是沒有影響的,只是格式不同。

運行結果爲:

List集合轉json格式字符串 :[
	{
		"age":15,
		"name":"lisi"
	},
	{
		"age":16,
		"name":"wangwu"
	}
]
複製代碼

Json轉化爲字符數組

//定義一個數組
    	String arrayAyy = "[[\'馬雲',50],null,[\'馬化騰',30]]";
    	//將數組轉化爲JSONArray
        JSONArray array = JSONArray.parseArray(arrayAyy);
        System.out.println("數組:" + array);
        System.out.println("數組長度: " + array.size());
        //經過方法去除空值null
        Collection nuCon = new Vector();
        nuCon.add(null);
        array.removeAll(nuCon);
        System.out.println("數組:" + array);
        System.out.println("數組長度: " + array.size());
複製代碼

運行結果爲:

數組:[["馬雲",50],null,["馬化騰",30]] 數組長度: 3 數組:[["馬雲",50],["馬化騰",30]] 數組長度: 2

複雜數據類型轉Json

HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("username", "zhangsan");
        map.put("age", 24);
        map.put("sex", "男");

        // map集合
        HashMap<String, Object> temp = new HashMap<String, Object>();
        temp.put("name", "xiaohong");
        temp.put("age", "23");
        map.put("girlInfo", temp);

        // list集合
        List<String> list = new ArrayList<String>();
        list.add("登山");
        list.add("騎車");
        list.add("旅遊");
        map.put("hobby", list);
        String jsonString = JSON.toJSONString(map);
        System.out.println("複雜數據類型map:" + jsonString);
        jsonString = JSON.toJSONString(list);
        System.out.println("複雜數據類型list:" + jsonString);
複製代碼

運行結果爲:

複雜數據類型map:{"sex":"男","username":"zhangsan","age":24,"hobby":["登山","騎車","旅遊"],"girlInfo":{"age":"23","name":"xiaohong"}}

複雜數據類型list:["登山","騎車","旅遊"]

Json反序列爲對象

String json = "{\"name\":\"chenggang\",\"age\":24}";
        Userinfo userInfo = JSON.parseObject(json, Userinfo.class);
        System.out.println("姓名是:" + userInfo.getName() + ", 年齡是:"
                + userInfo.getAge());
複製代碼

運行結果爲:

姓名是:chenggang, 年齡是:24

日期格式化

Date date = new Date();
        System.out.println("輸出毫秒值:" + JSON.toJSONString(date));
        System.out.println("默認格式爲:"
                + JSON.toJSONString(date,
                        SerializerFeature.WriteDateUseDateFormat));
        System.out.println("自定義日期:"
                + JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd",
                        SerializerFeature.WriteDateUseDateFormat));
複製代碼

運行結果爲:

輸出毫秒值:1534732296011

默認格式爲:"2018-08-20 10:31:36"

自定義日期:"2018-08-20"

我不能保證每個地方都是對的,可是能夠保證每一句話,每一行代碼都是通過推敲和斟酌的。但願每一篇文章背後都是本身追求純粹技術人生的態度。 永遠相信美好的事情即將發生。

相關文章
相關標籤/搜索