博客
关于我
Java json 数据格式封装
阅读量:651 次
发布时间: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/

    你可能感兴趣的文章
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—5.Pipeline和Handler二
    查看>>
    Netty源码—6.ByteBuf原理一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理一
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    netty的HelloWorld演示
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty的网络框架差点让我一夜秃头,哭了
    查看>>
    Netty相关
    查看>>
    Netty简介
    查看>>
    Netty线程模型理解
    查看>>
    netty解决tcp粘包和拆包问题
    查看>>
    Netty速成:基础+入门+中级+高级+源码架构+行业应用
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>
    netty(1):NIO 基础之三大组件和ByteBuffer
    查看>>