я хочу разобрать следующий ответ JSON с динамическим объектом JSON,вручную разобрать часть динамического объекта JSON наряду с Gson десериализатор
{
"id": 1,
"last_login": "2016-07-16T12:46:29.621996Z",
"point_of_sales": [
{
"Counter 4": {
"type": "retail",
"id": 6
}
},
{
"Counter 5": {
"type": "retail",
"id": 7
}
},
{
"Counter 6": {
"type": "retail",
"id": 8
}
}
]
}
Здесь имя объектов внутри «point_of_sales» массив динамичны, что делает его трудно разобрать с помощью Gson. Вот что я пытался до сих пор,
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("last_login")
@Expose
private String lastLogin;
@SerializedName("point_of_sales")
@Expose
private List<Map<String, Counter>> pointOfSales = new ArrayList<Map<String, Counter>>();
.......
getter & setters
Счетчик класса,
@SerializedName("type")
@Expose
private String type;
@SerializedName("id")
@Expose
private Integer id;
.......
getter & setters
Следуя этой процедуре, можно преобразовать объекты, но не может извлечь их из карты к классам Pojo.
for (Map<String, Counter> objectMap : response.getPointOfSales())
{
// How to extract the Counter pojo data from map list?
}
Я также попробовал этот путь, но ничего не работает,
ArrayList<Counter> pojos = new ArrayList<Counter>();
try {
for (Map<String, Counter> objectMap : result.getPointOfSales()) {
Counter pojo = new Counter();
for (Map.Entry<String, Counter> property : objectMap.entrySet()) {
Method setter = Counter.class.getMethod("set" + property.getKey().substring(0, 1).toUpperCase() + property.getKey().substring(1), property.getValue().getClass());
setter.invoke(pojo, property.getValue());
}
pojos.add(pojo);
}
} catch (Exception e) {
e.printStackTrace();
}
for (Counter pojo : pojos) {
Log.e("result", "" + pojo.getId() + " " + pojo.getType());
}
Есть ли способ, чтобы разобрать конкретный массив, используя,
Gson
Использование duel parsing для синтаксического анализа конкретной части вручную и остальной части ответа в Gson?
Я хочу, чтобы динамические объекты были обернуты в класс pojo.
вам нужен JsonDeserializer для этого. Если я правильно понимаю, чего вы хотите достичь – Blackbelt
Я просто хочу сделать динамические объекты, завернутые в класс pojo, так что данные поля «id», «type» могут быть получены легко. –
, тогда я думаю, что пользовательский [JsonDeserializer] (https://google.github.io/gson/apidocs/com/google/gson/JsonDeserializer.html) - это то, что вам нужно. – Blackbelt