我有一个以下形式的 JSON 请求:
{
"type": "Car"
"data": {
"object": {
"id": "1"
"color": "Red"
"plate": "J124D"
},
"owner": {
"name": "John"
}
}
}
现在,类型字段指示对象字段的内容。在上面的示例中,type = Car 表示对象容器将具有 id、颜色和牌照字段。但是,如果 type = Plane,则 Object 字段将具有 id、wingspan、制造商等。基本上,type 字段将动态指示哪个 Java 对象对应于“对象”。我对 jackson 相当陌生,所以我一直在寻找一些关于如何在代码中实现这种类型的动态映射的指示。到目前为止我已经有了这个,
public class Request {
@JsonProperty
String type;
@JsonProperty
Data data; // Probably need a custom deserializer here?
}
另一个难点是Request的使用。数据可能必须转换为 CarData 或 PlaneData 之类的内容,以便调用者可以轻松执行 request.getType(),然后从转换为适当类型的数据(汽车或飞机)的请求中提取数据。
最佳答案
一个简单的方法是使用 Map<String, Object>
映射data
属性:
public class Request {
private String type;
private Map<String, Object> data;
// Getters and setters
}
您可能会找到这个answer有用。
关于java - 使用 Jackson 进行动态对象映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44095462/