Fix for Issue 178.
This commit is contained in:
parent
3fc4bcc061
commit
5bffa1f679
@ -43,12 +43,12 @@ final class JsonCompactFormatter implements JsonFormatter {
|
|||||||
public void visitNull() throws IOException {
|
public void visitNull() throws IOException {
|
||||||
writer.append("null");
|
writer.append("null");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startArray(JsonArray array) throws IOException {
|
public void startArray(JsonArray array) throws IOException {
|
||||||
writer.append('[');
|
writer.append('[');
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonPrimitive member,
|
public void visitArrayMember(JsonArray parent, JsonPrimitive member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
if (!isFirst) {
|
if (!isFirst) {
|
||||||
writer.append(',');
|
writer.append(',');
|
||||||
@ -56,14 +56,14 @@ final class JsonCompactFormatter implements JsonFormatter {
|
|||||||
member.toString(writer, escaper);
|
member.toString(writer, escaper);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonArray member,
|
public void visitArrayMember(JsonArray parent, JsonArray member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
if (!isFirst) {
|
if (!isFirst) {
|
||||||
writer.append(',');
|
writer.append(',');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonObject member,
|
public void visitArrayMember(JsonArray parent, JsonObject member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
if (!isFirst) {
|
if (!isFirst) {
|
||||||
writer.append(',');
|
writer.append(',');
|
||||||
@ -90,7 +90,7 @@ final class JsonCompactFormatter implements JsonFormatter {
|
|||||||
writer.append(',');
|
writer.append(',');
|
||||||
}
|
}
|
||||||
writer.append('"');
|
writer.append('"');
|
||||||
writer.append(memberName);
|
writer.append(escaper.escapeJsonString(memberName));
|
||||||
writer.append("\":");
|
writer.append("\":");
|
||||||
member.toString(writer, escaper);
|
member.toString(writer, escaper);
|
||||||
}
|
}
|
||||||
@ -101,7 +101,7 @@ final class JsonCompactFormatter implements JsonFormatter {
|
|||||||
writer.append(',');
|
writer.append(',');
|
||||||
}
|
}
|
||||||
writer.append('"');
|
writer.append('"');
|
||||||
writer.append(memberName);
|
writer.append(escaper.escapeJsonString(memberName));
|
||||||
writer.append("\":");
|
writer.append("\":");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,33 +111,33 @@ final class JsonCompactFormatter implements JsonFormatter {
|
|||||||
writer.append(',');
|
writer.append(',');
|
||||||
}
|
}
|
||||||
writer.append('"');
|
writer.append('"');
|
||||||
writer.append(memberName);
|
writer.append(escaper.escapeJsonString(memberName));
|
||||||
writer.append("\":");
|
writer.append("\":");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitNullObjectMember(JsonObject parent, String memberName,
|
public void visitNullObjectMember(JsonObject parent, String memberName,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
if (serializeNulls) {
|
if (serializeNulls) {
|
||||||
visitObjectMember(parent, memberName, (JsonObject) null, isFirst);
|
visitObjectMember(parent, memberName, (JsonObject) null, isFirst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endObject(JsonObject object) throws IOException {
|
public void endObject(JsonObject object) throws IOException {
|
||||||
writer.append('}');
|
writer.append('}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final boolean escapeHtmlChars;
|
private final boolean escapeHtmlChars;
|
||||||
|
|
||||||
JsonCompactFormatter() {
|
JsonCompactFormatter() {
|
||||||
this(true);
|
this(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonCompactFormatter(boolean escapeHtmlChars) {
|
JsonCompactFormatter(boolean escapeHtmlChars) {
|
||||||
this.escapeHtmlChars = escapeHtmlChars;
|
this.escapeHtmlChars = escapeHtmlChars;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void format(JsonElement root, Appendable writer,
|
public void format(JsonElement root, Appendable writer,
|
||||||
boolean serializeNulls) throws IOException {
|
boolean serializeNulls) throws IOException {
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -53,7 +53,6 @@ public final class JsonObject extends JsonElement {
|
|||||||
*/
|
*/
|
||||||
public void add(String property, JsonElement value) {
|
public void add(String property, JsonElement value) {
|
||||||
Preconditions.checkArgument(property != null && !"".equals(property.trim()));
|
Preconditions.checkArgument(property != null && !"".equals(property.trim()));
|
||||||
|
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
value = JsonNull.createJsonNull();
|
value = JsonNull.createJsonNull();
|
||||||
}
|
}
|
||||||
@ -205,7 +204,7 @@ public final class JsonObject extends JsonElement {
|
|||||||
sb.append(',');
|
sb.append(',');
|
||||||
}
|
}
|
||||||
sb.append('\"');
|
sb.append('\"');
|
||||||
sb.append(entry.getKey());
|
sb.append(escaper.escapeJsonString(entry.getKey()));
|
||||||
sb.append("\":");
|
sb.append("\":");
|
||||||
entry.getValue().toString(sb, escaper);
|
entry.getValue().toString(sb, escaper);
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
JsonPrintFormatter() {
|
JsonPrintFormatter() {
|
||||||
this(true);
|
this(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonPrintFormatter(boolean escapeHtmlChars) {
|
JsonPrintFormatter(boolean escapeHtmlChars) {
|
||||||
this(DEFAULT_PRINT_MARGIN, DEFAULT_INDENTATION_SIZE, DEFAULT_RIGHT_MARGIN, escapeHtmlChars);
|
this(DEFAULT_PRINT_MARGIN, DEFAULT_INDENTATION_SIZE, DEFAULT_RIGHT_MARGIN, escapeHtmlChars);
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
private void breakLineIfNeeded() throws IOException {
|
private void breakLineIfNeeded() throws IOException {
|
||||||
breakLineIfThisToNextExceedsLimit(0);
|
breakLineIfThisToNextExceedsLimit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void breakLineIfThisToNextExceedsLimit(int nextLength) throws IOException {
|
private void breakLineIfThisToNextExceedsLimit(int nextLength) throws IOException {
|
||||||
if (getLine().length() + nextLength > printMargin - rightMargin) {
|
if (getLine().length() + nextLength > printMargin - rightMargin) {
|
||||||
finishLine();
|
finishLine();
|
||||||
@ -161,18 +161,18 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
writer.beginArray();
|
writer.beginArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonPrimitive member,
|
public void visitArrayMember(JsonArray parent, JsonPrimitive member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
addCommaCheckingFirst(isFirst);
|
addCommaCheckingFirst(isFirst);
|
||||||
writer.value(escapeJsonPrimitive(member));
|
writer.value(escapeJsonPrimitive(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonArray member,
|
public void visitArrayMember(JsonArray parent, JsonArray member,
|
||||||
boolean first) throws IOException {
|
boolean first) throws IOException {
|
||||||
addCommaCheckingFirst(first);
|
addCommaCheckingFirst(first);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitArrayMember(JsonArray parent, JsonObject member,
|
public void visitArrayMember(JsonArray parent, JsonObject member,
|
||||||
boolean first) throws IOException {
|
boolean first) throws IOException {
|
||||||
addCommaCheckingFirst(first);
|
addCommaCheckingFirst(first);
|
||||||
}
|
}
|
||||||
@ -189,35 +189,35 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
writer.beginObject();
|
writer.beginObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitObjectMember(JsonObject parent, String memberName, JsonPrimitive member,
|
public void visitObjectMember(JsonObject parent, String memberName, JsonPrimitive member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
addCommaCheckingFirst(isFirst);
|
addCommaCheckingFirst(isFirst);
|
||||||
writer.key(memberName);
|
writer.key(escaper.escapeJsonString(memberName));
|
||||||
writer.fieldSeparator();
|
writer.fieldSeparator();
|
||||||
writer.value(escapeJsonPrimitive(member));
|
writer.value(escapeJsonPrimitive(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitObjectMember(JsonObject parent, String memberName, JsonArray member,
|
public void visitObjectMember(JsonObject parent, String memberName, JsonArray member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
addCommaCheckingFirst(isFirst);
|
addCommaCheckingFirst(isFirst);
|
||||||
writer.key(memberName);
|
writer.key(escaper.escapeJsonString(memberName));
|
||||||
writer.fieldSeparator();
|
writer.fieldSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitObjectMember(JsonObject parent, String memberName, JsonObject member,
|
public void visitObjectMember(JsonObject parent, String memberName, JsonObject member,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
addCommaCheckingFirst(isFirst);
|
addCommaCheckingFirst(isFirst);
|
||||||
writer.key(memberName);
|
writer.key(escaper.escapeJsonString(memberName));
|
||||||
writer.fieldSeparator();
|
writer.fieldSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitNullObjectMember(JsonObject parent, String memberName,
|
public void visitNullObjectMember(JsonObject parent, String memberName,
|
||||||
boolean isFirst) throws IOException {
|
boolean isFirst) throws IOException {
|
||||||
if (serializeNulls) {
|
if (serializeNulls) {
|
||||||
visitObjectMember(parent, memberName, (JsonObject) null, isFirst);
|
visitObjectMember(parent, memberName, (JsonObject) null, isFirst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endObject(JsonObject object) {
|
public void endObject(JsonObject object) {
|
||||||
writer.endObject();
|
writer.endObject();
|
||||||
}
|
}
|
||||||
@ -229,7 +229,7 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
public void visitNull() throws IOException {
|
public void visitNull() throws IOException {
|
||||||
writer.value("null");
|
writer.value("null");
|
||||||
}
|
}
|
||||||
|
|
||||||
private String escapeJsonPrimitive(JsonPrimitive member) throws IOException {
|
private String escapeJsonPrimitive(JsonPrimitive member) throws IOException {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
member.toString(builder, escaper);
|
member.toString(builder, escaper);
|
||||||
@ -237,14 +237,14 @@ final class JsonPrintFormatter implements JsonFormatter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void format(JsonElement root, Appendable writer,
|
public void format(JsonElement root, Appendable writer,
|
||||||
boolean serializeNulls) throws IOException {
|
boolean serializeNulls) throws IOException {
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JsonWriter jsonWriter = new JsonWriter(writer);
|
JsonWriter jsonWriter = new JsonWriter(writer);
|
||||||
JsonElementVisitor visitor = new PrintFormattingVisitor(
|
JsonElementVisitor visitor = new PrintFormattingVisitor(
|
||||||
jsonWriter, new Escaper(escapeHtmlChars), serializeNulls);
|
jsonWriter, new Escaper(escapeHtmlChars), serializeNulls);
|
||||||
JsonTreeNavigator navigator = new JsonTreeNavigator(visitor, serializeNulls);
|
JsonTreeNavigator navigator = new JsonTreeNavigator(visitor, serializeNulls);
|
||||||
navigator.navigate(root);
|
navigator.navigate(root);
|
||||||
jsonWriter.finishLine();
|
jsonWriter.finishLine();
|
||||||
|
Loading…
Reference in New Issue
Block a user