我有json
{
"Person": {
"PersonId": 122,
"Name": "John",
"Surname": "Doe",
"age": 2
}
}
字符串
我想把它转换成Java类
public class Person {
private String personId;
private String name;
private String surname;
private int age;
//getters,setters...
}
型
我已经试过了
@Bean
ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new LowerCaseStrategy());
return mapper;
}
public static class LowerCaseStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase {
@Override
public String translate(String input) {
char[] chars = input.toCharArray();
chars[0] = Character.toLowerCase(chars[0]);
return new String(chars);
}
}
型
但这并没有帮助。
有人知道如何解决这个问题吗?
upd:我没有权限更改Person
类。
2条答案
按热度按时间tzdcorbm1#
你就快成功了。你犯的一个错误是PropertyNamingStrategy应用的方向:您正在将 * 从 * Java名称 * 转换为 * JSON名称,而不是相反。所以,这应该起作用:
字符串
此外,Jackson有
PropertyNamingStrategies.UPPER_CAMEL_CASE
,它应该做你需要的事情,而不需要实现你自己的。hmtdttj42#
要将具有uppercated字段名称的JSON转换为所需的Java类,可以使用Jackson库中的
@JsonProperty
注解。下面是如何修改Person
类和ObjectMapper配置来实现转换:1.修改
Person
类以使用@JsonProperty
注解:字符串
1.从ObjectMapper配置中删除自定义
LowerCaseStrategy
,因为JSON中的字段名称已经是小写的。型
现在,当您使用更新的ObjectMapper反序列化JSON时,它将正确地将具有uppercepted名称的字段Map到
Person
类中的相应字段。举例来说:
型
通过这些更改,具有uppercated字段名称的JSON将被正确地转换为Java
Person
对象。