1.问题说明及解决
一次协议对接,接口文档里的属性没有使用驼峰或者下划线,而是全部首字母大写,类似TableName、ObjectID
,使用lombok
创建的实体类。
1.1 @RestController
接口返回对象的首字母变成小写类似tableName、objectId
,问题解决:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class TestObject { @JsonProperty("TableName") private String TableName; @JsonProperty("ObjectID") private String ObjectID; }
1.2 JSON.toJSONString()
不管是自带JSON,还是阿里的fastjson
,都会将属性的字段首字母改为小写需要在大写的字段上用@JSONField
这个注解:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class TestObject { @JsonProperty("TableName") @JSONField(name = "TableName") private String TableName; @JsonProperty("ObjectID") @JSONField(name = "ObjectID") private String ObjectID; }
2.总结
- 问题一涉及的类为
import com.fasterxml.jackson.annotation.JsonProperty;
- 问题二涉及的类为
import com.alibaba.fastjson.annotation.JSONField;