fastjson使⽤说明⽂档
前⾔
Json简介
JSON全称JavaScript Object Notation js对象标记语⾔,实际上就是符合JSON格式规范的字符串,所有的数据都可以转换成JSON,⽽页⾯和后台程序直接通过String进⾏数据交互,当这些String符合JSON格式的话就会很快的被解析还原成原本的数据类型。
在纯Java环境中我们也可以使⽤Json来处理⼀些数据,例如对象的序列化,我们可以使⽤把对象转化成Json在本地存储。
基本的Json数据格式
1.对象类型以及Map的Json格式是:{“key”:”value”,”key2”:”value”}
例如:
User u = new User();u.setUsername(“abc”);u.setPassword(“b”);
对象u转化成Json之后为:{“username”:”abc”,”password”:”b”}
2.数组/list/set 的Json格式是:[元素1,元素2...]
例如:
int[] a = {12,343,23,125,26};
数组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;
javascript说明}
}
复制代码
实体类转为Json
Userinfo info = new Userinfo("马画藤", 30,"男");
String str_json = JSONString(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 = JSONString(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);
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 = JSONString(map);
System.out.println("复杂数据类型map:" + jsonString);
jsonString = JSONString(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("姓名是:" + Name() + ", 年龄是:"
+ Age());
复制代码
运⾏结果为:
姓名是:chenggang, 年龄是:24
⽇期格式化
Date date = new Date();
System.out.println("输出毫秒值:" + JSONString(date));
System.out.println("默认格式为:"
+ JSONString(date,
SerializerFeature.WriteDateUseDateFormat));
System.out.println("⾃定义⽇期:"
+ JSONStringWithDateFormat(date, "yyyy-MM-dd",
SerializerFeature.WriteDateUseDateFormat));
复制代码
运⾏结果为:
输出毫秒值:1534732296011
默认格式为:"2018-08-20 10:31:36"
⾃定义⽇期:"2018-08-20"
我不能保证每⼀个地⽅都是对的,但是可以保证每⼀句话,每⼀⾏代码都是经过推敲和斟酌的。希望每⼀篇⽂章背后都是⾃⼰追求纯粹技术⼈⽣的态度。 永远相信美好的事情即将发⽣。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论