阿里巴巴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使用的更多相关文章

  1. FastJSON 简单使用

    FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库.多了不说了,百度一下一大把. 在此,简单的总结一下自己用过,测试过的方法. 如果使用 ...

  2. Fastjson简单使用方法

    一.简单数据的序列化 pubic class UserInfo implements Serializable{ private String name; private int age; publi ...

  3. FastJson简单使用

    首先建立两个实体类,Student.java 和 Teacher.java public class Student { private int id; private String name; pr ...

  4. fastjson的JSONArray和JSONObject

    转自: http://blog.csdn.net/tangerr/article/details/76217924 Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理 ...

  5. fastjson对json字符串JSONObject和JSONArray互相转换操作示例

    2017-03-25 直接上代码: package com.tapt.instance; import com.alibaba.fastjson.JSON; import com.alibaba.fa ...

  6. fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配

    一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...

  7. Jackson和fastjson简单用法及性能对比

    背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...

  8. fastJson简单实用

    public class FastJsonText { @Test public void text(){ User user1 = new User(); user1.setName("健 ...

  9. fastjson中Map与JSONObject互换,List与JOSNArray互换的实现

    1.//将map转换成jsonObject JSONObject itemJSONObj = JSONObject.parseObject(JSON.toJSONString(itemMap)); 将 ...

随机推荐

  1. BigDecimal精度与相等比较的坑

    先想一下,创建BigDecimal对象的时候一般是怎么创建的? new一个,传进去值 BigDecimal.valueOf方法,传进去值 作为一个数字类型,经常有的操作是比较大小,有一种情况是比较是否 ...

  2. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  3. physics---hdu5826(积分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5826 题意:有n个小球在一条直线上滚动,起始位置为xi, 方向为di(-1往左走,1往右走),初始速度 ...

  4. JS模块化编程(四)--require应用

    获取&使用require.js 下载最新版的Require.JS.下载之后,把它放在项目的脚本文件夹下,比如 js 文件夹下,项目结构看上去应该是: 要充分使用Require.JS,将html ...

  5. util date 转 sql date

    JAVA 处理时间 - java.sql.Date.java.util.Date与数据库中的Date字段的转换方法,以及util包下的Date类与字符串的相互转换在java环境中使用的Date时间类通 ...

  6. 获取图片的大小(宽高):BytesIO

    获取图片的大小(宽高) from io import BytesIO,StringIO import requests from PIL import Image img_url = "ht ...

  7. 换个字体解决Dreamweaver文字选不中的问题

    在使用Dreamweaver时,有时我们要选中一些字符进行编辑或删除,光标在英文字上面可以选中,在中文字上面就选不中,郁闷吧.比如在编辑下面这段文字的时候,如图所示, 想选中“你难得已经忘了吗?”,当 ...

  8. 随机模拟MCMC和Gibbs Sampling

    随机模拟 统计模拟中有一个重要的问题就是给定一个概率分布 p(x),我们如何在计算机中生成它的样本.一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的. 通过线性同余发生器可以生成伪随机 ...

  9. 识别真假搜索引擎(搜索蜘蛛)方法(baidu,google,Msn,sogou,soso等)

    http://www.useragentstring.com/pages/useragentstring.php 今天分析研究了两个网站的 Apache 日志,分析日志虽然很无聊,但却是很有意义的事情 ...

  10. 【转】webpack中关于source map的配置

    Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...