首先建立两个实体类,Student.java 和 Teacher.java

public class Student {  

    private int id;
private String name;
private int age; /**
* 默认的构造方法必须不能省,不然不能解析
*/ public Student(){ }
public Student(int id,String name,int age) {
this.id = id;
this.name = name;
this.age = age;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} 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;
} @Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
} }
public class Teacher {  

    private int id;
private String name; private List<Student> students; /**
* 默认的构造方法必须不能省,不然不能解析
*/
public Teacher() { }
public Teacher(int id,String name) {
this.id = id;
this.name = name;
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + ", mStudents="
+ students + "]";
} }

对象转为json串

public class App
{
public static void main(String[] args) {
Student student = new Student(0, "Aaron", 24);
System.out.println(JSON.toJSONString(student)); List<Student> students = new ArrayList<Student>();
for(int i=0;i<5;i++) {
Student stu = new Student(i, "Student" + i, 18 +i);
students.add(stu);
}
System.out.println(JSON.toJSONString(students)); List<Teacher> teaList = new ArrayList<Teacher>();
long time = System.currentTimeMillis();
for(int i=0;i<10;i++) {
Teacher teacher = new Teacher(i, "Teacher " + i);
List<Student> stus = new ArrayList<Student>();
for(int j = 0 ;j<4;j++) {
Student s = new Student(j, "Student" + j, 18 +j);
stus.add(s);
}
teacher.setStudents(stus);
teaList.add(teacher);
}
String jsonTeach = JSON.toJSONString(teaList);
System.out.println("fastjson = " + jsonTeach);
System.out.println("==========================================");
Student student1 = new Student(0, "Aaron", 24);
System.out.println(JSON.toJSONString(student1,true)); }
}

json串转为对象

public class TestParseToObject {
public static void main(String[] args) { Student student = new Student(0, "Aaron", 24);
String str = JSON.toJSONString(student,true);
System.out.println(JSON.parseObject(str,Student.class));
System.out.println("================================================="); List<Student> students = new ArrayList<Student>();
for(int i=0;i<5;i++) {
Student stu = new Student(i, "Student" + i, 18 +i);
students.add(stu);
}
// 过滤哪些属性需要转换
// SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Student.class, "id","age");
// String jsonStu =JSON.toJSONString(students,filter);
String jsonStu = JSON.toJSONString(students);
System.out.println(jsonStu); // List<Student> stu =JSON.parseObject(jsonStu, new TypeReference<List<Student>>(){});
List<Student> stu =JSON.parseArray(jsonStu, Student.class);
for(int i=0;i<stu.size();i++)
{
System.out.println(stu.get(i));
}
}
}

日期相关

1.日期格式化:

FastJSON可以直接对日期类型格式化,在缺省的情况下,FastJSON会将Date转成long。

例5:FastJSON将java.util.Date转成long。

1 String dateJson = JSON.toJSONString(new Date());
2
3 System.out.println(dateJson);

输出结果:

1401370199040

例6:使用SerializerFeature特性格式化日期。

1 String dateJson = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
2
3 System.out.println(dateJson);

输出结果:

"2014-05-29 21:36:24"

也可以指定输出日期格式。

例7:指定输出日期格式。

1 String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");
2
3 System.out.println(dateJson);

输出结果:

"2014-05-29 21:47:00.154"

2.使用单引号。

例8:以例2为例。

String listJson = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);

输出结果:

[{'key1':'One','key2':'Two'},{'key3':'Three','key4':'Four'}]

3.JSON格式化。

例9:

String listJson = JSON.toJSONString(list, SerializerFeature.PrettyFormat);

输出结果:与例4结果一致。

4.输出Null字段。

缺省情况下FastJSON不输入为值Null的字段,可以使用SerializerFeature.WriteMapNullValue使其输出。

例10:

1 Map<String, Object> map = new HashMap<String,Object>();
2
3 String b = null;
4 Integer i = 1;
5
6 map.put("a", b);
7 map.put("b", i);
8
9 String listJson = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);

输出结果:

{"a":null,"b":1}

JSONObject,JSONArray是JSON的两个子类

JSONObject相当于Map<String, Object>,

JSONArray相当于List<Object>。

简单方法示例:

例16:将Map转成JSONObject,然后添加元素,输出。

 1 Map<String, Object> map = new HashMap<String, Object>();
2 map.put("key1", "One");
3 map.put("key2", "Two");
4
5 JSONObject j = new JSONObject(map);
6
7 j.put("key3", "Three");
8
9 System.out.println(j.get("key1"));
10 System.out.println(j.get("key2"));
11 System.out.println(j.get("key3"));

输出结果:

1 One
2 Two
3 Three

例17:将List对象转成JSONArray,然后输出。

 1 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
2
3 Map<String, Object> map = new HashMap<String, Object>();
4 map.put("key1", "One");
5 map.put("key2", "Two");
6
7 Map<String, Object> map2 = new HashMap<String, Object>();
8 map2.put("key1", "Three");
9 map2.put("key2", "Four");
10
11 list.add(map);
12 list.add(map2);
13
14 JSONArray j = JSONArray.parseArray(JSON.toJSONString(list));
15
16 for(int i=0; i<j.size(); i++){
17 System.out.println(j.get(i));
18 }

输出结果:

1 {"key1":"One","key2":"Two"}
2 {"key1":"Three","key2":"Four"}

FastJson简单使用的更多相关文章

  1. FastJSON 简单使用

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

  2. Fastjson简单使用方法

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

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

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

  4. fastjson 简单使用 及其JSONObject使用

    阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser. ...

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

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

  6. fastJson简单实用

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

  7. 高性能JSON库---FastJson(阿里巴巴)

    1.FastJSON简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 它採用一种"假定有序高速匹配"的算法,把JSON Parse的性能提升到极致,是 ...

  8. Fastjson反序列化漏洞研究

    0x01 Brief Description java处理JSON数据有三个比较流行的类库,gson(google维护).jackson.以及今天的主角fastjson,fastjson是阿里巴巴一个 ...

  9. JSON 解析 (一)—— FastJSON的使用

    FastJSON是一个高性能.功能完善的json序列化和解析工具库,可使用Maven添加依赖 <dependency> <groupId>com.alibaba</gro ...

随机推荐

  1. python 下划线--完美解释

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  2. Java获取当前的时间

    Java获取当前的时间 1.利用Java中的Calendar获取当前的时间 具体实现如下: /** * @Title:NowTime.java * @Package:com.you.model * @ ...

  3. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  4. Netty高可靠性设计:优化建议

    尽管Netty的可靠性已经做得非常出色,但是在生产实践中还是发现了一些待优化点,本小节将进行简单说明.希望后续的版本中可以解决,当然用户也可以根据自己的实际需要决定自行优化. 1  发送队列容量上限控 ...

  5. .Net Core使用Redis的一个入门简单Demo

    本例子讲述一个在.Net core环境中对Redis数据库进行增删改查操作. 首先,要安装好Redis数据库,至于怎么安装,本文不再赘述,可以自行百度,有很详细的教程. 安装好之后,在CMD中输入 r ...

  6. n人围成一圈报数

    题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位 思路:用一个数组存这n个人,里面的初始状态全设为1,表示都还在圈子里面. ...

  7. 【BZOJ3944】Sum(杜教筛)

    [BZOJ3944]Sum(杜教筛) 题面 求\[\sum_{i=1}^n\mu(i)和\sum_{i=1}^n\phi(i)\] 范围:\(n<2^{31}\) 令\[S(n)=\sum_{i ...

  8. LightOJ1282 Leading and Trailing

    题面 给定两个数n,k 求n^k的前三位和最后三位 Input Input starts with an integer T (≤ 1000), denoting the number of test ...

  9. [HNOI2007]紧急疏散

    二分+网络流判定 首先处理出每个人和门间的距离 二分时间,连边时把每个门拆成mid个,一个人能在mid时间内到达,他也可以在这等一会儿,那么这mid个门之间连边 如果可以在x的时间内到达,那么x~mi ...

  10. [BZOJ2761] [JLOI2011] 不重复数字 (set)

    Description 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 ...