52 lines
1.9 KiB
Java
52 lines
1.9 KiB
Java
package io.gitlab.jfronny.muscript.json;
|
|
|
|
import io.gitlab.jfronny.commons.serialize.json.JsonReader;
|
|
import io.gitlab.jfronny.commons.serialize.json.JsonTransport;
|
|
import io.gitlab.jfronny.commons.serialize.json.JsonWriter;
|
|
import io.gitlab.jfronny.muscript.data.additional.context.Scope;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Reader;
|
|
|
|
public class JsonLib {
|
|
public static Scope addTo(Scope scope) {
|
|
return new TransportLib<>(new LenientTransport(), new StrictTransport(), "toJson", "fromJson").addTo(scope);
|
|
}
|
|
|
|
private static class StrictTransport extends JsonTransport {
|
|
@Override
|
|
public JsonReader createReader(Reader source) {
|
|
return super.createReader(source)
|
|
.setLenient(false)
|
|
.setSerializeSpecialFloatingPointValues(true);
|
|
}
|
|
|
|
@Override
|
|
public String write(PerformWrite<IOException, JsonWriter> write) throws IOException {
|
|
return super.write(writer -> write.write(writer.setLenient(false)
|
|
.setNewline("")
|
|
.setIndent("")
|
|
.setSerializeSpecialFloatingPointValues(true)
|
|
.setSerializeNulls(true)));
|
|
}
|
|
}
|
|
|
|
private static class LenientTransport extends JsonTransport {
|
|
@Override
|
|
public JsonReader createReader(Reader source) {
|
|
return super.createReader(source)
|
|
.setLenient(true)
|
|
.setSerializeSpecialFloatingPointValues(true);
|
|
}
|
|
|
|
@Override
|
|
public String write(PerformWrite<IOException, JsonWriter> write) throws IOException {
|
|
return super.write(writer -> write.write(writer.setLenient(true)
|
|
.setNewline("\n")
|
|
.setIndent(" ")
|
|
.setSerializeSpecialFloatingPointValues(true)
|
|
.setSerializeNulls(true)));
|
|
}
|
|
}
|
|
}
|