package de.jpaw.bonaparte.core; import java.io.IOException; import java.util.List; import java.util.Map; import de.jpaw.jsonext.ExtendedJsonEscaperForAppendables; public class BonaparteJsonEscaper extends ExtendedJsonEscaperForAppendables { // static utility method: serialize Object (single field) public static String asJson(Object obj) { if (obj == null) return null; StringBuilder buff = new StringBuilder(100); try { new BonaparteJsonEscaper(buff).outputJsonElement(obj); } catch (IOException e) { throw new RuntimeException(e); } return buff.toString(); } // static utility method: serialize Object (single field) public static String asJson(Map<String, Object> obj) { if (obj == null) return null; StringBuilder buff = new StringBuilder(100); try { new BonaparteJsonEscaper(buff).outputJsonObject(obj); } catch (IOException e) { throw new RuntimeException(e); } return buff.toString(); } // static utility method: serialize Object (array) public static String asJson(List<?> obj) { if (obj == null) return null; StringBuilder buff = new StringBuilder(100); try { new BonaparteJsonEscaper(buff).outputJsonArray(obj); } catch (IOException e) { throw new RuntimeException(e); } return buff.toString(); } public BonaparteJsonEscaper(Appendable appendable) { super(appendable); } // private JsonComposer bonaparteJsonComposer = null; // public BonaparteJsonEscaper(Appendable appendable, JsonComposer bonaparteJsonComposer) { // super(appendable); // this.bonaparteJsonComposer = bonaparteJsonComposer; // avoid recursive construction of new objects // } @Override public void outputJsonElement(Object obj) throws IOException { if (obj instanceof BonaCustom) { // if (bonaparteJsonComposer == null) { // bonaparteJsonComposer = new JsonComposer(appendable, false, this); // } // // output as Json // bonaparteJsonComposer.writeObject((BonaCustom)obj); new JsonComposer(appendable, false, this).writeObject((BonaCustom)obj); return; } super.outputJsonElement(obj); } }