闲来无事写JSONのFastJson序列化

来源:互联网 发布:马东为什么离婚知乎 编辑:程序博客网 时间:2024/06/05 09:23

工具:

总结目标是ALI的FastJson

既定目标:

  1. 有一定的层次,部分属性是XX类
  2. 有个格式要求:返回一律用code表示返回码,data表示具体的信息,如下
{"data":"xxxx", "code":"200"}

准备

简述序列化本质

获取参数列表->获取参数对应的getter方法,继而获取参数的值->用参数名和参数值进行字符串拼装。(注解什么的类似)

加入依赖包
 <dependency>      <groupId>com.alibaba</groupId>      <artifactId>fastjson</artifactId>      <version>1.2.7</version>  </dependency>

定义需要序列化的对象

预期目标
{"data":{"whatever":[{"id":"a1","name":"b1"},{"id":"a2","name":"b2"},{"id":"a3","name":"b3"}],"parent":"jsonTest"},"code":"200"}
类定义

重点说明:为篇幅,省略了getter&setter方法
千万记得getter方法,要不序列化就是在呵呵

import java.util.ArrayList;import java.util.List;public class FastJsonTest {    String parent;    List<InerClass> whatever = new ArrayList<InerClass>();    class InerClass {        String id;        String name;        public InerClass(String id, String name) {            this.id = id;            this.name = name;        }    }    public void init() {        parent = "jsonTest";        whatever.add(new InerClass("a1", "b1"));        whatever.add(new InerClass("a2", "b2"));        whatever.add(new InerClass("a3", "b3"));    } }

定义类统一下JSON的返回格式

public class Result {  protected String code;  protected Object data;  public static String toJson(Object data) {      Result result = new Result();      result.setCode("200");      result.setData(data);      return JSON.toJSON(result).toString();  }

说明:同样省略了getter、需要结合异常进行Code值的优化

测试

FastJsonTest test = new FastJsonTest();test.init();System.out.println(Result.toJson(test));

测试达到预期,能说预期就是测试结果拷贝出来的么。

0 0
原创粉丝点击