FastJson简单使用
在工作中,常常客服端须要和服务端进行通信,眼下非常多项目都採用JSON的方式进行传输数据。简单的參数能够通过手动拼接JSON字符串,但假设请求的參数过多,採用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。
我在网上看了一些开源的JSON框架,比方Google提供的Gson。Jackson,FastJson等框架。
经过測试,个人认为FastJson执行效率比較高。并且简单易用。
FastJson不依赖于第三方包, 直接能够执行在Java JDK1.5之上,FastJson全然支持http://json.org的标准。支持各种JDK类型。包含基本类型、JavaBean、Collection、Map、Enum、泛型等
还支持循环引用。
FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是
https://github.com/AlibabaTech/fastjson
一个JSON库涉及的最基本功能就是序列化和反序列化。
Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。
一。简单的序列化
pubic class UserInfo implements Serializable{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
public class TestOne{
public static void main(String[] args){
UserInfo info=new UserInfo();
info.setName("zhangsan");
info.setAge(24);
//将对象转换为JSON字符串
String str_json=JSON.toJSONString(info);
System.out.println("JSON="+str_json);
}
}
二.复杂的数据类型
public static void test2() { 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); /*JSON序列化,默认序列化出的JSON字符串中键值对是使用双引號,假设须要单引號的JSON字符串,[eg:String jsonString = JSON.toJSONString(map, SerializerFeature.UseSingleQuotes);] *fastjson序列化时能够选择的SerializerFeature有十几个属性,你能够依照自己的须要去选择使用。
*/ String jsonString = JSON.toJSONString(map); System.out.println("JSON=" + jsonString); }
三.反序列化
public void test3(){
String json="{\"name\":\"chenggang\",\"age\":24}";
//反序列化
UserInfo userInfo=JSON.parseObject(json,UserInfo.class);
System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());
}
/**泛型的反序列化*/
public static void test4(){
String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";
Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){});
System.out.println(map.get("user"));
}
//同理, json字符串中能够嵌套各种数据类型。
四.日期格式化
public void test5(){
Date date=new Date();
//输出毫秒值
System.out.println(JSON.toJSONString(date));
//默认格式为yyyy-MM-dd HH:mm:ss
System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));
//依据自己定义格式输出日期
System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
}
这里举了几个简单的样例。 其他特殊要求能够依据FastJson的方法的说明,进行选择。
posted on 2019-05-03 10:38 xfgnongmin 阅读(133) 评论(0) 编辑 收藏 举报