fastjson 简单使用 及其JSONObject使用
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
源码地址:https://github.com/alibaba/fastjson
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
*public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
*public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
*public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
*public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
*public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
maven:
- <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.4</version>
- <classifier>jdk15</classifier>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.31</version>
- </dependency>
一般只用第二个fastjson就可以
demo:
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.TypeReference;
- import java.util.ArrayList;
- import java.util.List;
- import lombok.ToString;
- public class fastjson {
- public static void main(String[] args) {
- Group group = new Group();
- group.setId(0L);
- group.setName("admin");
- User guestUser = new User();
- guestUser.setId(2L);
- guestUser.setName("guest");
- User rootUser = new User();
- rootUser.setId(3L);
- rootUser.setName("root");
- group.getUsers().add(guestUser);
- group.getUsers().add(rootUser);
- String jsonString = JSON.toJSONString(group);
- System.out.println(jsonString);
- Group group2 = JSON.parseObject(jsonString, Group.class);
- System.out.println("===============List==============");
- String strList=JSON.toJSONString(group.getUsers());
- System.out.println(strList);
- List<User> list=JSON.parseArray(strList,User.class);
- System.out.println(JSON.toJSONString(list));
- List<User> list2=JSON.parseObject(strList,new TypeReference<List<User>>(){});
- System.out.println(JSON.toJSONString(list2));
- }
- }
- @ToString
- class User {
- private Long id;
- private String name;
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- class Group {
- private Long id;
- private String name;
- private List<User> users = new ArrayList<User>();
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List<User> getUsers() {
- return users;
- }
- public void setUsers(List<User> users) {
- this.users = users;
- }
- }
output:
- {"id":,"name":"admin","users":[{"id":,"name":"guest"},{"id":,"name":"root"}]}
- Disconnected from the target VM, address: '127.0.0.1:1655', transport: 'socket'
- ===============List==============
- [{"id":,"name":"guest"},{"id":,"name":"root"}]
- [{"id":,"name":"guest"},{"id":,"name":"root"}]
- [{"id":,"name":"guest"},{"id":,"name":"root"}]
特别注意上面的反序列化数组,有两种不同的方式。
2.查看JSONObject的使用
这个JSONObject在很多包里面都存在这个类,这里说的是fastjson包里面的使用
- package com.qhong.fastjson;
- //import com.alibaba.fastjson.JSONObject;
- //import net.sf.json.JSONObject;
- import com.alibaba.fastjson.JSONObject;
- import java.util.HashMap;
- import java.util.Map;
- public class OperatorJSON {
- public static void main(String[] args) {
- createJson();
- createJsonByMap();
- createJsonByJavaBean();
- }
- private static void createJson() {
- JSONObject obj = new JSONObject();
- obj.put("name", "John");
- obj.put("sex", "male");
- obj.put("age", 22);
- obj.put("is_student", true);
- obj.put("hobbies", new String[] {"hiking", "swimming"});
- //调用toString()方法可直接将其内容打印出来
- System.out.println(obj.toString());
- }
- private static void createJsonByMap() {
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("name", "John");
- data.put("sex", "male");
- data.put("age", 22);
- data.put("is_student", true);
- data.put("hobbies", new String[] {"hiking", "swimming"});
- JSONObject obj = new JSONObject(data);
- System.out.println(obj.toString());
- }
- private static void createJsonByJavaBean() {
- PersonInfo info = new PersonInfo();
- info.setName("John");
- info.setSex("male");
- info.setAge(22);
- info.setStudent(true);
- info.setHobbies(new String[] {"hiking", "swimming"});
- String text= JSONObject.toJSONString(info);
- System.out.println(text);
- // JSONObject obj = JSONObject.toJSON(info);
- // System.out.println(obj);
- }
- }
- class PersonInfo {
- private String name;
- private String sex;
- private int age;
- private boolean isStudent;
- private String[] hobbies;
- public void setName(String name) {
- this.name = name;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public void setStudent(boolean isStudent) {
- this.isStudent = isStudent;
- }
- public void setHobbies(String[] hobbies) {
- this.hobbies = hobbies;
- }
- //getter不能少
- public String getName() {
- return name;
- }
- public String getSex() {
- return sex;
- }
- public int getAge() {
- return age;
- }
- public boolean isStudent() {
- return isStudent;
- }
- public String[] getHobbies() {
- return hobbies;
- }
- }
output:
- {"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
- {"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
- {"age":22,"hobbies":["hiking","swimming"],"name":"John","sex":"male","student":true}
- Process finished with exit code 0
可以从注释的区域看出,这个是fastjson包里面的,如果切换到net.sf.json包里面,那么就会报错!
http://blog.csdn.net/glarystar/article/details/6654494
fastjson 简单使用 及其JSONObject使用的更多相关文章
- FastJSON 简单使用
FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库.多了不说了,百度一下一大把. 在此,简单的总结一下自己用过,测试过的方法. 如果使用 ...
- Fastjson简单使用方法
一.简单数据的序列化 pubic class UserInfo implements Serializable{ private String name; private int age; publi ...
- FastJson简单使用
首先建立两个实体类,Student.java 和 Teacher.java public class Student { private int id; private String name; pr ...
- fastjson的JSONArray和JSONObject
转自: http://blog.csdn.net/tangerr/article/details/76217924 Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理 ...
- fastjson对json字符串JSONObject和JSONArray互相转换操作示例
2017-03-25 直接上代码: package com.tapt.instance; import com.alibaba.fastjson.JSON; import com.alibaba.fa ...
- fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配
一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...
- Jackson和fastjson简单用法及性能对比
背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...
- fastJson简单实用
public class FastJsonText { @Test public void text(){ User user1 = new User(); user1.setName("健 ...
- fastjson中Map与JSONObject互换,List与JOSNArray互换的实现
1.//将map转换成jsonObject JSONObject itemJSONObj = JSONObject.parseObject(JSON.toJSONString(itemMap)); 将 ...
随机推荐
- Find The Multiple--POJ1426
Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...
- hibernate注解(一)JoinColumn
@Entity @Table(name="t_group") public class Group { private int id; private String name; p ...
- 【Python-虫师】自动化测试模型--参数化
一.自动化测试代码最开始是线性的,后续发展为模块化代码,所以涉及到了函数和方法的引用. 1. 函数和方法的最主要区别: Python的方法中定义函数的时候,函数中必须写self.而单独定义函数的时候则 ...
- 查看Django和flask版本
查看Django版本 检查是否安装成功,可以在dos下查看Django版本. 1.输入python 2.输入import django 3.输入django.get_version() 1 2 3 4 ...
- AngularJS 表达式 对象和数组
AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据绑 ...
- Chrome Input框老是有输入记录的终极解决方案
尤其是日期框,输入记录都挡住日期弹框了. 浏览器地址栏输入: chrome://settings/autofill,按钮关掉就可以了.
- 浅谈Android View滑动和弹性滑动
引言 View的滑动这一块在实际开发中是非常重要的,无论是优秀的用户体验还是自定义控件都是需要对这一块了解的,我们今天来谈一下View的滑动. View的滑动 View滑动功能主要可以使用3种方式来实 ...
- 全文搜索引擎Xapian
安装过程 安装xapian-core wget http://oligarchy.co.uk/xapian/1.0.13/xapian-core-1.0.13.tar.gztar zxvf xapia ...
- 完整table
.table-bordered{ border:1px solid #cccccc; } .table { border-spacing: 0;/*设置或检索当表格边框独立时(即border-coll ...
- 使用点击二分图传导计算query-document的相关性
之前的博客中已经介绍了Ranking Relevance的一些基本情况(Click Behavior,和Text Match):http://www.cnblogs.com/bentuwuying/p ...