Java tutorial
/* Copyright 2015 CrushPaper.com. This file is part of CrushPaper. CrushPaper is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU Affero General Public License as published by the Free Software Foundation. CrushPaper is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with CrushPaper. If not, see <http://www.gnu.org/licenses/>. */ package com.crushpaper; import org.apache.commons.lang3.StringEscapeUtils; /** A utility class that helps with creation of JSON data. */ public class JsonBuilder { /** Returns the value JSON encoded and quoted. */ static String quote(String value) { if (value == null) { return "null"; } return "\"" + StringEscapeUtils.escapeJson(value) + "\""; } /** Appends indentation to `result`. */ static public void appendIndentation(int level, StringBuilder result) { for (int i = 0; i < level; ++i) result.append(" "); } /** Adds a key and value to a JSON StringBuilder. */ static boolean addPropertyToJsonString(StringBuilder result, Object value, boolean addedAnyYet, String key, int indentationLevel) { appendIndentation(indentationLevel, result); return addPropertyToJsonString(result, value, addedAnyYet, key); } /** Adds a key and value to a JSON StringBuilder. */ static boolean addPropertyToJsonString(StringBuilder result, Object value, boolean addedAnyYet, String key) { if (value == null) { return addedAnyYet; } if (value instanceof Boolean && !((Boolean) value)) { return addedAnyYet; } if (addedAnyYet) { result.append(",\n"); } result.append("\""); result.append(key); result.append("\": "); if (value instanceof String) { result.append(quote((String) value)); } else { result.append(value); } return true; } }