Spring Boot中如何在模型类中创建带值类型定义的JSONObject?
Spring Boot 实现带类型的JSON结构方案
以下两种方案均可对应你给出的JavaScript结构,可根据场景选择:
方案1:强类型实体类(Spring Boot官方推荐写法)
这种写法类型安全,和Spring Boot自带的序列化组件完美适配,是业务开发中的首选方案:
import com.fasterxml.jackson.annotation.JsonProperty; public class CustomModel { // 对应JS中的 _id: Number,数值范围小可用Integer,范围大用Long @JsonProperty("_id") // 指定序列化后输出键名为_id,而非Java字段名id private Long id; // 对应JS中的 status: String private String status; // 对应JS中的 name: String private String name; // 无参构造,序列化/反序列化必需 public CustomModel() {} // 全参构造,方便快速创建实例 public CustomModel(Long id, String status, String name) { this.id = id; this.status = status; this.name = name; } // 以下Getter、Setter可引入Lombok依赖后用@Data注解省略手写 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
使用示例:
// 直接创建带值的实例 CustomModel model = new CustomModel(1001L, "enabled", "测试用户");
该实例被Spring Boot接口返回时会自动序列化为你需要的JSON结构,字段类型完全匹配。
方案2:动态JSONObject实现
如果你不需要提前定义实体类,需要灵活构造JSON结构,可使用JSON工具类实现:
基于Spring自带Jackson(无需额外依赖)
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; // 构造实例 ObjectMapper objectMapper = new ObjectMapper(); ObjectNode jsonObj = objectMapper.createObjectNode(); // 按类型赋值 jsonObj.put("_id", 1001); // Number类型 jsonObj.put("status", "enabled"); // String类型 jsonObj.put("name", "测试用户"); // String类型
基于FastJSON2
import com.alibaba.fastjson2.JSONObject; // 构造实例 JSONObject jsonObj = new JSONObject(); // 按类型赋值 jsonObj.put("_id", 1001); // 自动识别为Number类型 jsonObj.put("status", "enabled"); // 自动识别为String类型 jsonObj.put("name", "测试用户"); // 自动识别为String类型
内容的提问来源于stack exchange,提问作者Oya
相关产品推荐
相关产品推荐

