博客
关于我
Java json 数据格式封装
阅读量:642 次
发布时间:2019-03-15

本文共 3305 字,大约阅读时间需要 11 分钟。

项目文档:JSON 数据处理类与工具类封装


1. 项目背景与目标

本项目旨在为后端业务逻辑提供标准化的JSON数据处理接口,确保返回格式的一致性,并便于快速开发和维护。


2. 类定义说明

2.1. JsonArray
public class JsonArray implements Serializable {    private int code;    private String msg;    private String data = null;        public JsonArray(int code, String msg, String data) {        this.code = code;        this.msg = msg;        this.data = data;    }        //Set方法(省略部分,仅保留主要属性)    public void setCode(int code) {        this.code = code;    }        public String getData() {        return data;    }        @Override    public String toString() {        return "{ \"code\": " + code + ", \"msg\": " + msg + ", \"data\": " + data + "}";    }}

说明:

  • JsonArray 用于封装返回结构化的JSON数组数据。
  • code 表示业务状态码,值为200表示成功,500表示错误等。
  • msg 表示提示信息。
  • data 为实际数据内容,支持字符串、数字、对象等多种类型。
  • toString() 方法用于转换为标准化JSON格式。
2.2. JsonString
public class JsonString implements Serializable {    private int code;    private String msg;    private String data = null;        public JsonString(int code, String msg, String data) {        this.code = code;        this.msg = msg;        this.data = data;    }        //Set方法(省略部分,仅保留主要属性)    public void setMsg(String msg) {        this.msg = msg;    }        @Override    public String toString() {        return "{ \"code\": " + code + ", \"msg\": " + msg + ", \"data\": " + data + "\"}";    }}

说明:

  • JsonString 用于封装返回结构化的JSON字符串。
  • JsonArray类似,codemsgdata属性功能相同。
  • 注意在toString() 方法中,data 属性默认使用单引号,避免JSON解析错误。

3. 工具类封装

3.1. toJson 工具类
import com.alibaba.fastjson.JSON;public class toJson {    public static String toJsonString(int code, String msg, Object data) {        return new JsonString(code, msg, JSON.toJSONString(data)).toString();    }        public static String toJsonArray(int code, String msg, Object data) {        return new JsonArray(code, msg, JSON.toJSONString(data)).toString();    }}

说明:

  • toJsonString(Object data):将任意类型的数据转换为JSON字符串。
  • toJsonArray(Object data):将数据转换为JSON数组格式。
  • 使用com.alibaba.fastjson库提供的toJSONString方法为核心转换功能。
3.2. 使用场景示例
// 返回JSON数组public String test() {    List info = orderService.test();    if (info != null) {        return toJsonArray(200, "获取今日就餐人信息成功", info);    } else {        return toJsonString(100, "获取今日就餐人信息失败", null);    }}

说明:

  • toList():假设计算服务返回一个List对象,用于传递数据。
  • toJsonArray()方法将List对象转换为JSON数组返回。

4. HTTP 接口示例

4.1. 接口定义
@GetMapping("/test")@ResponseBodypublic String test() {    List info = orderService.test();    if (info != null) {        return toJsonArray(200, "获取今日就餐人信息成功", info);    } else {        return toJsonString(100, "获取今日就餐人信息失败", null);    }}

说明:

  • 使用@GetMapping@ResponseBody注解实现HTTP GET请求。
  • 接口返回类型为String,根据业务逻辑调用服务并封装JSON格式响应。

5. 开发注意事项

  • 数据格式统一性:确保所有JSON数据的格式与接口文档一致,避免前后端混乱。
  • 异常处理:)code 的值和msg 的描述需与前端协调,避免错误信息不符。
  • 性能优化toJson 工具类应避免频繁创建对象,优化性能。
  • 兼容性:确保JSON库版本兼容,选择稳定版本以避免潜在bug。

  • 6. 验证示例代码

    // 调用JSON数组示例JsonObject object = new JsonObject();object.put("key1", "value1");object.put("key2", "value2");JsonObject arrayObject = new JsonObject();arrayObject.put("data", object.getValue("key1"));// 将数组转换为字符串String jsonString = toJsonString(200, "响应成功", arrayObject);

    输出结果

    {    "code": 200,    "msg": "响应成功",    "data": {        "key1": "value1"    }}

    说明:

    • 分层封装使每个部分功能单一,易于维护和扩展。
    • �bine的JsonArrayJsonString类设计灵活,支持多种数据类型。

    7. 总结

    本文介绍了一个用于JSON数据处理的标准化封装方案,涵盖了类定义、工具类以及实际应用中的使用场景。通过合理的设计和优化,确保了代码简洁性和可维护性,为后续开发奠定了良好基础。

    转载地址:http://vaglz.baihongyu.com/

    你可能感兴趣的文章
    javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
    查看>>
    ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
    查看>>
    Git简单理解与使用
    查看>>
    echarts 基本图表开发小结
    查看>>
    adb通过USB或wifi连接手机
    查看>>
    JDK9-15新特性
    查看>>
    Vector 实现类
    查看>>
    HashTable类
    查看>>
    TreeSet、TreeMap
    查看>>
    JVM内存模型
    查看>>
    可变长度参数
    查看>>
    堆空间常用参数总结
    查看>>
    3、条件查询
    查看>>
    cordova打包apk更改图标
    查看>>
    GitHub上传时,项目在已有文档时直接push出现错误解决方案
    查看>>
    页面置换算法
    查看>>
    文件系统的层次结构
    查看>>
    减少磁盘延迟时间的方法
    查看>>
    vue(渐进式前端框架)
    查看>>
    权值初始化和与损失函数
    查看>>