java-commons/muscript-json/src/main/java/io/gitlab/jfronny/muscript/json/JsonLib.java
JFronny 24aab51a4b
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat(muscript-gson): rename to muscript-json and port to commons-serialize-json
2024-04-12 21:19:36 +02:00

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)));
}
}
}