Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用gson将枚举作为单例转换为JSON_Java_Enums_Singleton_Android_Gson - Fatal编程技术网

Java 使用gson将枚举作为单例转换为JSON

Java 使用gson将枚举作为单例转换为JSON,java,enums,singleton,android,gson,Java,Enums,Singleton,Android,Gson,我有如下enum的单例实现: public enum DeviceDetail{ INSTANCE; private Context context = null; private int handlercheck = 0; private String network = ""; private String deviceInfo = "NoData"; private String androidVersion = "";

我有如下enum的单例实现:

public enum DeviceDetail{

    INSTANCE;  
    private  Context context = null;
    private  int handlercheck = 0;
    private  String network = "";
    private  String deviceInfo = "NoData";
    private  String androidVersion = "";
    private  String appVersion = "";
    private  String appName = "";
    private  String deviceID;
    private  String deviceinfo;

    public void initilize(){
           // deviceInfo = getDeviceInfo();
            networktype = getNetworktype(context);
            deviceID = getDeviceID(context);
            //androidVersion = getAndroidVersion();
            appVersion = getAppVersion(context);
            appName = getAppName(context);
    }    
    DeviceDetail(){
        deviceInfo = getDeviceInfo();
        androidVersion = getAndroidVersion();
        initilize();

    }

    public static DeviceDetail getInstance() {
        return DeviceDetail.INSTANCE;
    }
}
public static String convertObjectToJsonString(DeviceDetail deviceData) {
        // Gson gson = new Gson();
        // GsonBuilder gb = new GsonBuilder();
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("androidVersion", deviceData.getAndroidVersion());
        jsonObject.addProperty("appName", deviceData.getAppName());
        jsonObject.addProperty("appVersion", deviceData.getAppVersion());
        jsonObject.addProperty("networkType", deviceData.getNetworktype());
        jsonObject.addProperty("deviceInfo", deviceData.getDeviceInfo());
        jsonObject.addProperty("deviceID", deviceData.getDeviceID());
        jsonObject.addProperty("city", deviceData.getCity());
        jsonObject.addProperty("country", deviceData.getCountry());
        //jsonObject.addProperty("appName",deviceData.getAppName());

        return jsonObject.toString();
    }
我想使用GSON将这个DeviceDetail转换为JSON,这是我已经编写的

public static String convertObjectToJsonString(DeviceDetail deviceData)    {
        Gson gson = new Gson();
        return gson.toJson(deviceData);
    }
我把这个方法称为

convertObjectToJsonString(DeviceDetail.INSTANCE)

但它只返回字符串“INSTANCE”,不像对对象那样返回键值对。建议需要进行更改,以便在键值JSON中获取枚举中所有字段的字符串。

我最终使用了一种不太优雅的解决方法,如下所示:

public enum DeviceDetail{

    INSTANCE;  
    private  Context context = null;
    private  int handlercheck = 0;
    private  String network = "";
    private  String deviceInfo = "NoData";
    private  String androidVersion = "";
    private  String appVersion = "";
    private  String appName = "";
    private  String deviceID;
    private  String deviceinfo;

    public void initilize(){
           // deviceInfo = getDeviceInfo();
            networktype = getNetworktype(context);
            deviceID = getDeviceID(context);
            //androidVersion = getAndroidVersion();
            appVersion = getAppVersion(context);
            appName = getAppName(context);
    }    
    DeviceDetail(){
        deviceInfo = getDeviceInfo();
        androidVersion = getAndroidVersion();
        initilize();

    }

    public static DeviceDetail getInstance() {
        return DeviceDetail.INSTANCE;
    }
}
public static String convertObjectToJsonString(DeviceDetail deviceData) {
        // Gson gson = new Gson();
        // GsonBuilder gb = new GsonBuilder();
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("androidVersion", deviceData.getAndroidVersion());
        jsonObject.addProperty("appName", deviceData.getAppName());
        jsonObject.addProperty("appVersion", deviceData.getAppVersion());
        jsonObject.addProperty("networkType", deviceData.getNetworktype());
        jsonObject.addProperty("deviceInfo", deviceData.getDeviceInfo());
        jsonObject.addProperty("deviceID", deviceData.getDeviceID());
        jsonObject.addProperty("city", deviceData.getCity());
        jsonObject.addProperty("country", deviceData.getCountry());
        //jsonObject.addProperty("appName",deviceData.getAppName());

        return jsonObject.toString();
    }