我正在调用一个返回复杂JSON的专有API:
{
data: {
id: 123,
name: 'foo',
createdBy: {
id: 234,
type: 'user'
},
currency: {
id: 456,
type: 'currency'
}
},
links: {
user: [
{
id: 234,
fullName: 'Peter'
}
],
currency: [
{
id: 234,
symbol: 'Euro'
}
]
}
}
不是使用@idRef
或类似的东西引用对象,而是使用具有两个属性的对象:类型和id。
然后我需要在链接结构中查找相应的对象。
是否可以使用Jackson将此JSON反序列化为:
public class Foo {
private int id;
private String name;
private User createdBy;
private Currency currency;
}
public class User {
private int id;
private String fullName;
}
public class Currency {
private int id;
private String symbol;
}
我试图找到“ObjectIdResolver”的答案,但我找不到实现此目的的方法。
答案 0 :(得分:0)
您可以使用com.google.gson.Gson;
lib将JSON字符串解析为java对象。
首先,您需要在JSON字符串上设计Java表示。
class DataObject{
public Data data;
public Links links;
}
class Links{
public List<User> user;
public List<Currency> currency;
}
class Data{
public Long id;
public String name;
public CommanObject createdBy;
public CommanObject currency;
}
class CommanObject{
public Long id;
public String type;
}
class User{
public Long id;
public String fullName;
}
class Currency{
public Long id;
public String symbol;
}
要解析JSON String,请尝试以下代码:
Gson gson = new Gson();
DataObject dataObject = gson.fromJson(metaDataString, DataObject.class);
第二个解决方案,因为你已经使用了Jackson lib,而不是尝试下面的一个:
ObjectMapper mapper = new ObjectMapper();
DataObject obj = mapper.readValue(jsonInString, DataObject.class);