Загрузить объект с помощью Gson - PullRequest
6 голосов
/ 05 марта 2012

Простите, если это тривиально или невозможно, но у меня здесь понедельник утром.

Я хотел бы создать метод, который реализует некоторые методы из библиотеки Gson для загрузки некоторыхНастройки объектов.По сути, у меня есть куча различных объектов настроек, но я не хочу переопределять метод загрузки для каждого класса, чтобы я хотел иметь что-то вроде:

public class ConfigLoader {
    public static void main(final String[] args) {   
        final ConfigurationSettings loadedConfigSettigs =
            load("testSettings.json", ConfigurationSettings.class);

        final AlternativeConfigurationSettings alternativeConfigSettigs =
            load("testSettings2.json", AlternativeConfigurationSettings .class);
    }

    public T load(final InputStream inputStream, final Class<T> clazz) {
        try {
            if (inputStream != null) {
                final Gson gson = new Gson();
                final BufferedReader reader =
                    new BufferedReader(new InputStreamReader(inputStream));
                return gson.fromJson(reader, clazz);
            }
        } catch (final Exception e) {
        }
        return null;
    }
}

, где я могу передатьInputStream и класс объекта, который я хочу вернуть.Есть ли простой способ сделать это (я не хочу создавать метод для каждого класса, который я хочу загружать, и при этом я не хочу создавать определенный загрузчик для каждого класса)?

1 Ответ

10 голосов
/ 05 марта 2012

Работает следующий код (требуется Java 1.5 или выше):

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import com.google.gson.Gson;


public class ConfigLoader {
    public static void main(final String[] args) {
        final ConfigurationSettings loadedConfigSettigs = load(new FileInputStream(new File("testSettings.json")),
                ConfigurationSettings.class);

        final AlternativeConfigurationSettings alternativeConfigSettigs = load(new FileInputStream(new File("testSettings2.json")),
                AlternativeConfigurationSettings.class);
    }

    public static <T> T load(final InputStream inputStream, final Class<T> clazz) {
        try {
            if (inputStream != null) {
                final Gson gson = new Gson();
                final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                return gson.fromJson(reader, clazz);
            }
        } catch (final Exception e) {
        }
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...