/** * Writes a property, the value will be wrote by the given {@link Runnable} function. */ default JsonWriter property(String key, Runnable propertyWriter) { key(key); if(null == propertyWriter){ null_(); }else{ propertyWriter.run(); } return this; }
/** * Writes a property, the value will be wrote by the given {@link JsonStringable} object. */ default JsonWriter property(String key, JsonStringable o) { key(key); if(null == o){ null_(); }else{ o.toJson(this); } return this; }
@Override protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { try (OutputStream os = outputMessage.getBody()){ try (OutputStreamWriter writer = new OutputStreamWriter(os, getCharset(outputMessage))) { JsonWriter jsonWriter = JSON.writer(writer).create(); if(o == null) { jsonWriter.null_(); return; } if(o.getClass().isArray()) { Object[] a = (Object[])o; jsonWriter.startArray(); for(Object item : a) { ((JsonStringable)item).toJson(jsonWriter); } jsonWriter.endArray(); }else { ((JsonStringable)o).toJson(jsonWriter); } } } }