возражать здесь
я есть ниже JSON и из которого мне нужно сделатьMap<String, String>
, В приведенном ниже JSON у меня есть только три уровняparentCategory
но в целом это может быть больше, а иногда и меньше.
79720
которыйid
изcategories
раздел и значение должны быть10987
которыйid
из последнихparentCategory
.Теперь я могу быть вложеннымparentCategory
внутри них, поэтому у меня есть проблемы, делающие POJO для этого. Я могу иметь один уровеньparentCategory
или я могу быть вложеннымparentCategory
внутри каждогоparentCategory
и мне всегда нужно получить идентификатор для последнегоparentCategory
.
Поэтому я создаю POJO для этого, перейдя вjsonschema2pojo и предоставил мой JSON, где он сгенерировал мне все файлы, которые мне нужны. С JSON ниже, он создал три класса, как этоParentCategory
, ParentCategory_
а такжеParentCategory__
заparentCategory
поле. Теперь, так как я не знаю, сколькоparentCategory
У меня есть уровни, поэтому я не уверен, что это лучший способ для создания POJO для них и извлечьid
поле для последнегоparentCategory
, Есть ли способ сделать это с помощью Джексона?
Я должен прочитать все эти данные в POJO, так как я также читаю все остальные поля.
{
"paginationResponse": {
"pageNumber": 1,
"entriesPerPage": 200,
"totalPages": 3
},
"listings": [
{
"categories": [
{
"id": "79720",
"name": "Sunglasses",
"localizedName": "Sunglasses",
"level": 4,
"leafCategory": true,
"parentCategory": {
"id": "394",
"name": "Sunglasses & Fashion Eyewear",
"localizedName": "Sunglasses & Fashion Eyewear",
"level": 3,
"leafCategory": false,
"parentCategory": {
"id": "2340",
"name": "Men's Accessories",
"localizedName": "Men's Accessories",
"level": 2,
"leafCategory": false,
"parentCategory": {
"id": "10987",
"name": "Clothing, Shoes & Accessories",
"localizedName": "Clothing, Shoes & Accessories",
"level": 1,
"leafCategory": false
}
}
}
}
],
"processlisting": {
....
},
"processlistingmetainfo": {
...
},
"processlistingproperties": [
{
"propertyName": "item_url",
"propertyValues": [
{
"stringValue": "url"
}
]
},
{
"propertyName": "listing_site_id",
"propertyValues": [
{
"stringValue": "0"
}
]
}
]
}
],
"total": 100
}
Примечание. У меня нет контроля над этой структурой JSON, поскольку она не принадлежит нам, поэтому я не могу изменить структуру JSON вообще.
Ниже приведены три класса дляParentCategory
который был сгенерирован на основе выше JSON, но в целом я могу иметь несколько уровнейParentCategory
и я не знаю заранее.
public class ParentCategory {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("localizedName")
private String localizedName;
@JsonProperty("level")
private long level;
@JsonProperty("leafCategory")
private boolean leafCategory;
@JsonProperty("parentCategory")
private ParentCategory_ parentCategory;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
....
}
public class ParentCategory_ {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("localizedName")
private String localizedName;
@JsonProperty("level")
private long level;
@JsonProperty("leafCategory")
private boolean leafCategory;
@JsonProperty("parentCategory")
private ParentCategory__ parentCategory;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
...
}
public class ParentCategory__ {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("localizedName")
private String localizedName;
@JsonProperty("level")
private long level;
@JsonProperty("leafCategory")
private boolean leafCategory;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
...
}