Как получить GSON.fromJson с типом, указанным в переменной? - PullRequest
0 голосов
/ 24 сентября 2019

Я хотел использовать GSON.fromJSON следующим образом:

Class<?> type = Abc.class;
Class<?> parametersObject = GSON.fromJson(parameters, type);

Но я получаю ошибку компиляции во 2-й строке.Как определить тип возврата следующей строки?Я знаю, что это был бы тип Abc в вышеупомянутом случае.Но я хочу сделать это динамическим на основе того, что указано в переменной типа.Как я могу это сделать?

1 Ответ

1 голос
/ 24 сентября 2019

Попробуйте с приведенным ниже кодом.Возникает вопрос о разнице между ? и T в сигнатурах классов и методов, link .

public class Tests<T> {

    @Test
    public void test01() {
        Tests<String> stringTest= new Tests<>();
        System.out.println(stringTest.parseObject("testtestt", String.class));
    }

    public T parseObject(String parameters, Class<T> clazz) {
        Gson gson = new Gson();
        T obj = (T) gson.fromJson(parameters, clazz);
        return obj;
    }
}

`` UPD: объявить <T> T тип возвращаемого метода.

@Test
public void test02() {
    String stringstring = parseObject02("stringstring", String.class);
    System.out.println(stringstring);
    List list = parseObject02("[1,2,3]", List.class);
    System.out.println(list);
//        output in console
//        stringstring
//        [1.0, 2.0, 3.0]
}

public <T> T parseObject02(String parameters, Class<T> clazz) {
    Gson gson = new Gson();
    T obj = gson.fromJson(parameters, clazz);
    return obj;
}
...