Взгляните на следующий код, который отлично работает:
MyData myData = new MyData(1, "one");
MyData myData2 = new MyData(2, "two");
MyData [] data = {myData, myData2};
String toJson = gson.toJson(data, MyData[].class);
MyData [] newData = gson.fromJson(toJson, MyData[].class);
MyData - это простой класс с полями int и String. Это прекрасно работает. Но что, если класс не известен до времени выполнения? например Это может быть не MyData, а совершенно другой класс. Единственное, что мы знаем, это имя класса (представленное в виде строки), которое ранее было определено отправителем с помощью Class.forName.
Работает нормально, если объект не является массивом, например:
final Class<?> componentType = Class.forName(componentClassName);
context.deserialize(someElement, componentType);
Вышеуказанная техника не работает для массивов.
Есть предложения?