2015-02-27 6 views
5

Ich habe es schwer zu schreiben ziemlich print JSON Zeichenfolge in Datei mit Gson-Bibliothek. Code, den ich verwende, ist hier:Pretty print JSON-Ausgabe in FileOutput Stream mit GSON JsonWriter schreiben

Gson gs = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();  

    JsonWriter jsonWriter = null; 
    try { 
     jsonWriter = new JsonWriter(new OutputStreamWriter(stream, "UTF-8")); 
     jsonWriter.beginArray(); 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    for (Feed feed : feeds) { 
     gs.toJson(feed, Feed.class, jsonWriter); 
    }  

    try { 
     jsonWriter.endArray(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      jsonWriter.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Hier Stream ist nichts anderes als eine Datei Ausgabestrom. Obwohl ich den hübschen Druck aktiviert habe, bekomme ich noch unformatierte JSON-Zeichenketten in der Datei.

Jede Hilfe wird geschätzt.

+1

Die Verwendung eines JSONWriter ist redundant - dafür ist GSON zuständig. Hast du versucht 'gs.toJSON (feeds, outputStreamWriter)' '? –

+0

Vielen Dank Adrian, es hat funktioniert! – BigD

Antwort

7

Sie können den hübschen Druck einfach aktivieren, indem Sie den Einzug festlegen.

jsonWriter.setIndent(" "); 
+2

^Dies ist die richtige Antwort. Der 'GsonBuilder.setPrettyPrinting()' Aufruf wird ignoriert, wenn ein 'JsonWriter' verwendet wird. –