package moe.nea.pcj.json; import moe.nea.pcj.Result; import java.util.function.Function; public interface MapCodec { Result decode( RecordView record, JsonLikeOperations ops); Result, JsonLikeError> encode(T value, JsonLikeOperations ops); default JsonCodec codec() { return RecordJoiners.join(withGetter(it -> it), it -> it); } default RecordCodec withGetter(Function getter) { return new RecordCodec<>(this, getter); } }