
能否将如下 json 在反序列化时去掉中间的子属性得到期望的对象结果??
{ "name": "John", "address": { "street": "123 Main St", "city": "Anytown" } } 期望对象
@Data public class Address { private String name; private String street; private String city; } 2 shubiao 217 天前 import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { String json = "{ \"name\": \"John\", \"address\": { \"street\": \"123 Main St\", \"city\": \"Anytown\" } }"; ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(json, Person.class); System.out.println(person.getName()); System.out.println(person.getStreet()); System.out.println(person.getCity()); } } class Person { private String name; @JsonProperty("address.street") private String street; @JsonProperty("address.city") private String city; // Getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } } |
3 EdisonEdz 217 天前 |
4 Rickkkkkkk 217 天前 手动转换是最好的方案,你用一个中间结构体去接,然后把这个中间结构体转换成你期望的对象 你用一些“奇技淫巧”做到看起来方便的方案都是为后续的迭代挖坑,包括看不明白、不知道怎么支持新字段等等 |
5 zhwguest 217 天前 咱们至少要说清楚用哪个库来序列化吧,有的库是运行期反射,有的库是插件注解。差异可大了。 |
8 Hayson 217 天前 这个 @JsonUnwrapped |
11 spritecn 217 天前 @Rickkkkkkk 赞同,怎么直接怎么来 |