2016-01-27 8 views
0
JsonObjectBuilder builder = factory.createObjectBuilder().add("input", input); 
    JsonObject jsonData = builder.build(); 
    String jsonDataString = jsonData.toString(); 


    try { 
     OutputStream jsonStream = new FileOutputStream(jsonPath); 
     OutputStreamWriter jsonStreamWriter = new OutputStreamWriter(jsonStream); 
     Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
     String prettyOutput = gson.toJson(jsonData); 
     System.out.println(prettyOutput); 
     jsonStreamWriter.write(prettyOutput); 
    } 
    catch(Exception e) {} 

Выхода я получаю странно:Я пытаюсь преобразовать мой JSON объект в довольно формат, используя gson но встретив что-то странное

Он добавляет «„значение“:» перед каждой строкой значения ключа , image

Мои данные JSON-то вроде этого:

{ 
    "input": { 
     "record0": { 
      "Active": "", 
      "Level": "", 
      "Name": "Pre-Session", 
      "Description": "", 
      "Record": "", 
      "Field": "", 
      "Std. Rule": "", 
      "Ext. Rule": "//Updated By: Sukanya Dasgupta On: 25-Jan-2016" 
     } 
    } 
} 
+0

Обратитесь к изображению по ссылке, чтобы узнать, как работает мой выход gson. – Pu96

ответ

0

Не является ожидать, но я думаю, что проблема в том, что public String toJson(Object src) теряет информацию о типе:

Этот метод должен быть использован, когда указанный объект не является общим типом . Этот метод использует Object.getClass() для получения типа для указанного объекта , но getClass() теряет общий тип из-за функции типа Erasure Java.

+0

Но я использую объект JsonData в качестве указанного объекта, и именно так я вижу, что большинство людей красиво печатает JsonData, поэтому оно должно технически работать. Я не вижу ничего плохого в моем коде, или есть? У вас есть обходное решение для этого? – Pu96