Index: trunk/src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java	(revision 17565)
+++ trunk/src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java	(revision 17570)
@@ -11,4 +11,5 @@
 
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -35,6 +36,7 @@
     public void exportData(File file, Layer layer) throws IOException {
         if (layer instanceof OsmDataLayer) {
+            DataSet data = ((OsmDataLayer) layer).data;
             try (Writer out = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8)) {
-                out.write(new GeoJSONWriter(((OsmDataLayer) layer).data).write());
+                new GeoJSONWriter(data).write(true, out);
             }
         } else {
Index: trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 17565)
+++ trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 17570)
@@ -4,4 +4,5 @@
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.io.Writer;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -96,6 +97,16 @@
     public String write(boolean pretty) {
         StringWriter stringWriter = new StringWriter();
+        write(pretty, stringWriter);
+        return stringWriter.toString();
+    }
+
+    /**
+     * Writes OSM data as a GeoJSON string (prettified or not).
+     * @param pretty {@code true} to have pretty output, {@code false} otherwise
+     * @param writer The writer used to write results
+     */
+    public void write(boolean pretty, Writer writer) {
         Map<String, Object> config = Collections.singletonMap(JsonGenerator.PRETTY_PRINTING, pretty);
-        try (JsonWriter writer = Json.createWriterFactory(config).createWriter(stringWriter)) {
+        try (JsonWriter jsonWriter = Json.createWriterFactory(config).createWriter(writer)) {
             JsonObjectBuilder object = Json.createObjectBuilder()
                     .add("type", "FeatureCollection")
@@ -103,6 +114,5 @@
             appendLayerBounds(data, object);
             appendLayerFeatures(data, object);
-            writer.writeObject(object.build());
-            return stringWriter.toString();
+            jsonWriter.writeObject(object.build());
         }
     }
