JSONWriterPretty.java
package com.alibaba.fastjson2;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.util.UUID;
final class JSONWriterPretty
extends JSONWriter {
final JSONWriter jsonWriter;
int indent;
int startObjectOff;
protected JSONWriterPretty(JSONWriter jsonWriter) {
super(jsonWriter.context, null, false, jsonWriter.charset);
this.jsonWriter = jsonWriter;
}
@Override
public void writeComma() {
write0(',');
write0('\n');
for (int i = 0; i < indent; ++i) {
write0('\t');
}
}
@Override
public void writeInt32(int value) {
jsonWriter.writeInt32(value);
}
@Override
public void writeInt64(long i) {
jsonWriter.writeInt64(i);
}
@Override
public void writeFloat(float value) {
jsonWriter.writeFloat(value);
}
@Override
public void writeDouble(double value) {
jsonWriter.writeDouble(value);
}
@Override
public void writeDecimal(BigDecimal value) {
jsonWriter.writeDecimal(value);
}
@Override
public void writeBigInt(BigInteger value, long features) {
jsonWriter.writeBigInt(value, features);
}
@Override
public void writeUUID(UUID value) {
jsonWriter.writeUUID(value);
}
@Override
public void writeString(String str) {
jsonWriter.writeString(str);
}
@Override
public void writeString(char[] chars, int off, int len, boolean quote) {
jsonWriter.writeString(chars, off, len, quote);
}
@Override
public void writeLocalDate(LocalDate date) {
jsonWriter.writeLocalDate(date);
}
@Override
public void writeLocalDateTime(LocalDateTime dateTime) {
jsonWriter.writeLocalDateTime(dateTime);
}
@Override
public void writeDateTime14(int year, int month, int dayOfMonth, int hour, int minute, int second) {
jsonWriter.writeDateTime14(year, month, dayOfMonth, hour, minute, second);
}
@Override
public void writeDateTime19(int year, int month, int dayOfMonth, int hour, int minute, int second) {
jsonWriter.writeDateTime19(year, month, dayOfMonth, hour, minute, second);
}
@Override
public void writeDateTimeISO8601(
int year,
int month,
int dayOfMonth,
int hour,
int minute,
int second,
int millis,
int offsetSeconds,
boolean timeZone
) {
jsonWriter.writeDateTimeISO8601(year, month, dayOfMonth, hour, minute, second, millis, offsetSeconds, timeZone);
}
@Override
public void writeDateYYYMMDD8(int year, int month, int dayOfMonth) {
jsonWriter.writeDateYYYMMDD8(year, month, dayOfMonth);
}
@Override
public void writeDateYYYMMDD10(int year, int month, int dayOfMonth) {
jsonWriter.writeDateYYYMMDD10(year, month, dayOfMonth);
}
@Override
public void writeTimeHHMMSS8(int hour, int minute, int second) {
jsonWriter.writeTimeHHMMSS8(hour, minute, second);
}
@Override
public void writeLocalTime(LocalTime time) {
jsonWriter.writeLocalTime(time);
}
@Override
public void writeZonedDateTime(ZonedDateTime dateTime) {
jsonWriter.writeZonedDateTime(dateTime);
}
@Override
public void writeReference(String path) {
jsonWriter.writeReference(path);
}
@Override
public void startObject() {
level++;
jsonWriter.startObject = true;
startObject = true;
write0('{');
indent++;
write0('\n');
for (int i = 0; i < indent; ++i) {
write0('\t');
}
startObjectOff = jsonWriter.off;
}
@Override
public void endObject() {
level--;
indent--;
write0('\n');
for (int i = 0; i < indent; ++i) {
write0('\t');
}
write0('}');
jsonWriter.startObject = false;
}
@Override
public void startArray() {
level++;
write0('[');
indent++;
write0('\n');
for (int i = 0; i < indent; ++i) {
write0('\t');
}
}
@Override
public void endArray() {
level++;
indent--;
write0('\n');
for (int i = 0; i < indent; ++i) {
write0('\t');
}
write0(']');
jsonWriter.startObject = false;
}
@Override
public void writeRaw(char[] chars, int off, int len) {
jsonWriter.writeRaw(chars, off, len);
}
@Override
public void writeNameRaw(char[] chars) {
if (jsonWriter.startObject) {
jsonWriter.startObject = false;
} else {
writeComma();
}
jsonWriter.writeRaw(chars, 0, chars.length);
}
@Override
public void writeRaw(byte[] bytes) {
jsonWriter.writeRaw(bytes);
}
@Override
public void writeNameRaw(byte[] bytes) {
if (jsonWriter.startObject) {
jsonWriter.startObject = false;
} else {
writeComma();
}
jsonWriter.writeRaw(bytes);
}
@Override
public void writeName(String name) {
if (jsonWriter.startObject) {
jsonWriter.startObject = false;
} else {
writeComma();
}
jsonWriter.writeString(name);
}
@Override
public void writeNameRaw(byte[] bytes, int offset, int len) {
jsonWriter.writeNameRaw(bytes, offset, len);
}
@Override
public void writeNameRaw(char[] bytes, int offset, int len) {
jsonWriter.writeNameRaw(bytes, offset, len);
}
@Override
public void writeNameAny(Object name) {
if (jsonWriter.startObject) {
jsonWriter.startObject = false;
} else {
writeComma();
}
jsonWriter.writeAny(name);
}
@Override
protected void write0(char ch) {
jsonWriter.write0(ch);
}
@Override
public void writeRaw(String str) {
jsonWriter.writeRaw(str);
}
@Override
public void writeColon() {
jsonWriter.writeColon();
}
@Override
public void writeInt16(short[] value) {
jsonWriter.writeInt16(value);
}
@Override
public byte[] getBytes() {
return jsonWriter.getBytes();
}
@Override
public int size() {
return jsonWriter.size();
}
@Override
public byte[] getBytes(Charset charset) {
return jsonWriter.getBytes(charset);
}
@Override
public void flushTo(Writer to) {
jsonWriter.flushTo(to);
}
@Override
public int flushTo(OutputStream to) throws IOException {
return jsonWriter.flushTo(to);
}
@Override
public int flushTo(OutputStream to, Charset charset) throws IOException {
return jsonWriter.flushTo(to, charset);
}
@Override
public void writeBase64(byte[] bytes) {
jsonWriter.writeBase64(bytes);
}
@Override
public void writeHex(byte[] bytes) {
jsonWriter.writeHex(bytes);
}
@Override
public void writeRaw(char ch) {
jsonWriter.writeRaw(ch);
}
@Override
public void writeChar(char ch) {
jsonWriter.writeChar(ch);
}
@Override
public String toString() {
return jsonWriter.toString();
}
}