diff --git a/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java b/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
index 1d113e3..c1be04e 100644
--- a/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
+++ b/src/main/java/org/apache/sling/feature/io/json/JSONReaderBase.java
@@ -38,7 +38,6 @@
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonStructure;
-import javax.json.JsonWriter;
 
 import org.apache.felix.configurator.impl.json.JSMin;
 import org.apache.felix.configurator.impl.json.JSONUtil;
@@ -397,12 +396,7 @@
                                  break;
                 case JSON : checkType("JSON Extension " + name, value, Map.class, List.class);
                             final JsonStructure struct = build(value);
-                            try ( final StringWriter w = new StringWriter()) {
-                                final JsonWriter jw = Json.createWriter(w);
-                                jw.write(struct);
-                                w.flush();
-                                ext.setJSON(w.toString());
-                            }
+                            ext.setJSONStructure(struct);
                             break;
                 case TEXT : checkType("Text Extension " + name, value, String.class, List.class);
                             if ( value instanceof String ) {
diff --git a/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java b/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
index c41ddff..66b6ed2 100644
--- a/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
+++ b/src/main/java/org/apache/sling/feature/io/json/JSONWriterBase.java
@@ -16,7 +16,6 @@
  */
 package org.apache.sling.feature.io.json;
 
-import java.io.StringReader;
 import java.io.Writer;
 import java.lang.reflect.Array;
 import java.util.Collection;
@@ -26,7 +25,6 @@
 import java.util.Map;
 
 import javax.json.Json;
-import javax.json.JsonStructure;
 import javax.json.stream.JsonGenerator;
 import javax.json.stream.JsonGeneratorFactory;
 
@@ -225,11 +223,7 @@
             }
             final String key = ext.getName().concat(":").concat(ext.getType().name()).concat("|").concat(state);
             if ( ext.getType() == ExtensionType.JSON ) {
-                final JsonStructure struct;
-                try ( final StringReader reader = new StringReader(ext.getJSON()) ) {
-                    struct = Json.createReader(reader).read();
-                }
-                generator.write(key, struct);
+                generator.write(key, ext.getJSONStructure());
             } else if ( ext.getType() == ExtensionType.TEXT ) {
                 generator.writeStartArray(key);
                 for(String line : ext.getText().split("\n")) {
