У меня есть интересная проблема с разбором JSON, по крайней мере для меня, так как я делаю это впервые. У меня есть следующий образец JSON, и я хочу сопоставить его с эквивалентными DTO:
{
"modules":
[
{
"name":"module1",
"shortId":23425,
"pmns":
[
{
"name":"pmn1",
"position":1,
"pmnType":"D3"
},
{
"name":"pmn3",
"position":3,
"pmnType":"R2"
},
{
"name":"pmn7",
"position":5,
"pmnType":"S1"
},
]
},
{
"name":"module2",
"shortId":1572,
"pmns":
[
{
"name":"pmn1",
"position":3,
"pmnType":"D3"
},
{
"name":"pmn12",
"position":35,
"pmnType":"R2"
},
]
}
]
}
Это мой класс ModuleDTO:
public class ModuleDTO {
private String _name;
private short _shortId;
private PmnDTO[] _pmns;
public String getName() {
return _name;
}
public short getShortId() {
return _shortId;
}
public PmnDTO[] getPmns() {
return _pmns;
}
@JsonProperty("name")
public void setName(String name) {
this._name = name;
}
@JsonProperty("shortId")
public void setShortId(short shortId) {
this._shortId = shortId;
}
@JsonProperty("pmns")
public void setPmns(PmnDTO[] pmns) {
this._pmns = pmns;
}
}
Здесь не скопировано, но мой класс PmnDTO похож, то есть геттеры и сеттеры для каждого свойства в объекте pmn JSON.
Я написал следующий код, чтобы попытаться сопоставить его с DTO. Я использую библиотеку com.FasterXml.jackson (версия 2.3.1).
// Got the response, construct a DTOs out of it ...
ObjectMapper mapper = new ObjectMapper();
StringReader reader = new StringReader(response); // Json Response
// Convert the JSON response to appropriate DTO ...
ModuleDTO moduleDto = mapper.readValue(reader, ModuleDTO.class);
Очевидно, этот код не работал. Может кто-нибудь сказать, как я могу сопоставить ответ JSON с моими DTO, учитывая, что «модули» представляют собой массив в JSON, а также содержат массив переменного размера внутри себя.
Благодарю вас.
(*Випул)() ;