能否将如下 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 14 天前
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 14 天前
|
4
Rickkkkkkk 14 天前 ![]() 手动转换是最好的方案,你用一个中间结构体去接,然后把这个中间结构体转换成你期望的对象
你用一些“奇技淫巧”做到看起来方便的方案都是为后续的迭代挖坑,包括看不明白、不知道怎么支持新字段等等 |
![]() |
5
zhwguest 14 天前
咱们至少要说清楚用哪个库来序列化吧,有的库是运行期反射,有的库是插件注解。差异可大了。
|
8
Hayson 14 天前
这个 @JsonUnwrapped
|
11
spritecn 14 天前
@Rickkkkkkk 赞同,怎么直接怎么来
|