JSON.toJSONString()丢失/少字段

本文介绍了一个关于使用JSON.toJSONString()方法转换对象为JSON格式时遇到的一个问题:某个字段消失不见。通过对比不同setter和getter方法的名称,找到了问题所在并给出了有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述: 

 使用JSON.toJSONString() 方法转对象为JSON格式,然而结果却不见了一个字段。

原因: JSON 这个方法没有识别setter,getter方法

我的字段为“uId" 

因为我的实体是由generator mybatis自动生成的,生成的setter,getter如下:

    public Long getuId() {
        return uId;
    }

    public void setuId(Long uId) {
        this.uId = uId;
    }

再另添加一套setter,getter,不是修改,不是修改,不是修改,重说三:

   
    public void setUId(Long uId) {
    	this.uId = uId;
    }

    public Integer getDtId() {
        return dtId;
    }

好使了。

感谢参考说明:https://blog.youkuaiyun.com/w408859832/article/details/70139935







`JSON.toJSONString()` 是 Java 中将 Java 对象转换成 JSON 字符串的方,通常用于序列化数据。如果你想忽略某些字段在转换过程中不包含在 JSON 输出中,可以利用 `ObjectMapper` 或者第三方库如 Fastjson 的特性。 例如,如果你使用的是 Jackson 的 `ObjectMapper`,你可以创建一个 `ObjectWriter` 并设置它的 `writeMapNullValue` 和 `defaultTyping` 属性来控制是否包含 null 或者省略指定字段: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.type.TypeReference; // 创建一个配置对象,设置 JsonInclude.Include.NON_NULL 来忽略空值 ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 或者针对特定字段使用 @JsonIgnore 注解 public class MyObject { private String fieldToIgnore; // 使用 @JsonIgnore 注解这个字段 //... } MyObject obj = ...; String json = mapper.writeValueAsString(obj); ``` 如果你使用的是 Alibaba 的 Fastjson,可以使用 `FastjsonUtils` 类的 `convertToFastJson` 方,并传入 `Feature.DisableFieldFilter` 特性来过滤掉不需要的字段: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; public class MyObject { @JSONField(serialize=false) // 忽略这个字段 private String fieldToIgnore; //... } MyObject obj = ...; String json = JSON.toJSONString(obj, Feature.DisableFieldFilter); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值