问题:同事定义的实体类都是大写的,但是传给客户端的时候,依然是小写。

Springboot开发

1、实体类dto


import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.util.List;

@Data
public class QueryDto {
    /**
     * 分级开关状态
     */
    @JSONField(name = "FJKGZT")
    private String FJKGZT;

    /**
     * 同步开关状态
     */
    @JSONField(name = "TBKGZT")
    private String TBKGZT;

    /**
     * 开关状态字典信息
     */
    @JSONField(name = "KGZTZDXX")
    private List<DictDataVo> KGZTZDXX;

}

2、具体实现代码

3、通过postman工具,查询的结果如下

 

解决方法有两种:

第一种:最后行通过JSON转,将dto实体类转成String,再将其转成Object对象。(效果可以达到,但不建议使用)

return CallResultUtil.success(JSON.parseObject(JSON.toJSONString(dto)));

第二种:在类上添加一下注解即可

 

@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)

包含所有field属性并设为可见:@JsonAutoDetect(fieldVisibility=Visibility.ANY

取消getter方法的自动检测:@JsonAutoDetect(getterVisibility=Visibility.NONE

@JsonAutoDetect注解是Jackson包下的。

jackson的自动检测机制

jackson允许使用任意的构造方法或工厂方法来构造实例

使用@JsonAutoDetect(作用在类上)来开启/禁止自动检测

fieldVisibility:字段的可见级别

ANY:任何级别的字段都可以自动识别

getterVisibility:get方法的可见级别

NONE:所有字段都不可以自动识别

NON_PRIVATE:非private修饰的字段可以自动识别

PROTECTED_AND_PUBLIC:被protected和public修饰的字段可以被自动识别

PUBLIC_ONLY:只有被public修饰的字段才可以被自动识别

DEFAULT:同PUBLIC_ONLY

jackson默认的字段属性发现规则如下:

所有被public修饰的字段->所有被public修饰的getter->所有被public修饰的setter

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐