import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder(alphabetic = true)
public class User {
@JsonProperty("Id")
private Integer id;
@JsonProperty("Name")
private String name;
@JsonProperty("LoginName")
private String loginName;
@JsonProperty("LoginPassword")
private String loginPassword;
@JsonProperty("Address")
private String address;
说明:
@JsonPropertyOrder(alphabetic = true):
此注解用于类上,作用是将返回的json按属性按照字母表排序。
@JsonProperty():
此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把name属性序列化为Name。
2、序列化
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
User user = new User(1, "李浩", "lihao", "123456", "安徽");
ObjectMapper objectMapper = new ObjectMapper();
String serializeUser = objectMapper.writeValueAsString(user);
System.out.println(serializeUser);
3、序列化结果
{"Address":"安徽","Id":1,"LoginName":"lihao","LoginPassword":"123456","Name":"李浩"}
在将实体对象转成json格式返回给前端时,对象的属性名称全是大写的变成小写,其他有大写有小写的却没变。在网上百度一下,可以用@JsonProperty("字段名称")可以解决这个问题。
一开始将 @JsonProperty加在字段名称上,如下图所示:
运行后结果确实不是自己想要的,结果中确实有对象属性名称确实大写了,但问题是小写也会同存在,如下图:
最后发现问题是要 ...
忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题
忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题
本文当可以直接用记事本打开
问题由来:
这两天对接其他部门的api接口时,发现一个参数检查始终过不去,最后被告知这个参数的首字母必须为大写,这就很恶心了!因为java object自动转出来的json首字母都是小写的!
解决方案:
网上有说用@JsonFiled @JSONProperties 注解可以解决的,但是我试了下没有成功,而且每个参数都要加,很麻烦,还有些是内部类。
因为内部类较多,我就写了一个递归的Obj...
第三方API 所有字段首字母大写,没有按照驼峰规则,导致服务器端对应字段无法正常入参。
在JavaBean的字段上使用@JsonProperty注解 起个别名。使用@RequestBody注解接收。
@JsonProperty(value = "Name",required = false)
private String name;
@JsonProperty(value = "UUID",required = true)
private String uuid;
问题产生原理
首先 Ja
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
18690