У меня есть коллекция классов, таких, как это:Анализировать список динамических классов в gson андроида
entityClasses = new HashMap<String, Class>();
entityClasses.put("EntityType1", EntityType1.class);
entityClasses.put("EntityType2", EntityType2.class);
У меня также есть список JSON своих экземпляров, а также:
String entityJSON = "[{"type":"EntityType1","name":"... attributes"},...]";
Где Атрибут типа определяет класс объекта, который станет объектом анализа JSON. Как я могу разобрать их с помощью gson?
Я попытался следующим:
String type = "EntityType1"; // I already can fetch this.
final Class entityClass = entityClasses.get(type);
new Gson().fromJson(entityJSON, new TypeToken<ArrayList<entityClass>>(){}.getType());
Какой будет работать, если entityClass было фактическое имя класса, а не переменная, которая представляет класс. В моем случае, однако, я получаю следующее сообщение об ошибке: Неизвестного класса: «entityClass»
Так как можно разобрать с помощью переменного класса?
Заранее благодарен!
Как насчет вы получите тип пункт JSON вручную, а затем провести остаток JSON в Gson? –
Извините, моя ошибка. Это то, что я на самом деле делаю. Ответ был исправлен. – user3156850
Это не то, как должны работать токены типа. 'TypeToken' должен объявлять параметры своего типа во время компиляции, и вы не можете их заменить во время выполнения. Просто создайте сопоставление типа «Map>» и опишите каждый токен типа, как новый 'новый TypeToken <Список >() {}'. –