2016-01-12 2 views
1

У меня есть одноэлементная реализация перечисления, как показано ниже:новообращенного перечисления в одноэлементном в формат JSON с помощью gson

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; 
    } 
} 

Я хочу, чтобы преобразовать этот DeviceDetail в JSON с помощью GSON, для этого я написал

public static String convertObjectToJsonString(DeviceDetail deviceData) { 
     Gson gson = new Gson(); 
     return gson.toJson(deviceData); 
    } 

Я называю этот метод следующим:

convertObjectToJsonString(DeviceDetail.INSTANCE) 

но он возвращает мне строку «INSTANCE», а не пары ключевых значений, поскольку она d для объектов. Предложите внести изменения, чтобы я получил строку со всеми полями в перечислении в ключевом значении JSON.

ответ

0

Я закончил в использовании не столь изящный обходной путь, как показано ниже:

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(); 
    } 
Смежные вопросы