使用Gson加载对象

Son*_*man 6 java reflection json gson

原谅我,如果这是微不足道的或不可能的,但我在这里有一个星期一早上的时刻.

我想创建一个方法,从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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在哪里传递InputStream我想要返回的对象的类.有没有一种简单的方法(我不想为每个我想要加载的类创建一个方法,我也不想为每个类创建一个特定的加载器)?

Gui*_*let 10

以下代码有效(需要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;
    }
}
Run Code Online (Sandbox Code Playgroud)