FastJson简单使用

Posted zailushang1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastJson简单使用相关的知识,希望对你有一定的参考价值。

首先建立两个实体类,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简单使用的主要内容,如果未能解决你的问题,请参考以下文章

fastjson 的简单使用

高性能JSON框架之FastJson的简单使用

fastjson简单使用demo,@JSONField注解属性字段上与setget方法上。实体类toString(),实体类转json的区别;_下划线识别

FastJSON 简单使用

深拷贝的最简单实现(使用fastjson)

JSON解析工具——fastjson的简单使用