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"

我不能保证每个地方都是对的,可是能够保证每一句话,每一行代码都是通过推敲和斟酌的。但愿每一篇文章背后都是本身追求纯粹技术人生的态度。 永远相信美好的事情即将发生。

相关文章
相关标签/搜索