All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dslplatform.json.serializers.JsObjSerializer Maven / Gradle / Ivy

package com.dslplatform.json.serializers;

import com.dslplatform.json.JsonWriter;
import io.vavr.Tuple2;
import jsonvalues.JsObj;
import jsonvalues.JsValue;

import java.util.Iterator;
import java.util.Objects;

public final class JsObjSerializer implements JsonWriter.WriteObject {

    private final JsValueSerializer valueSerializer;

    public JsObjSerializer(final JsValueSerializer valueSerializer) {
        this.valueSerializer = valueSerializer;
    }

    @Override
    public void write(final JsonWriter sw,
                      final JsObj value
                     ) {
        sw.writeByte(JsonWriter.OBJECT_START);
        final int size = Objects.requireNonNull(value).size();
        if (size > 0) {
            final Iterator> iterator = value.iterator();
            Tuple2                 kv       = iterator.next();
            sw.writeString(kv._1);
            sw.writeByte(JsonWriter.SEMI);
            final JsValue fist = kv._2;
            valueSerializer.serialize(sw,
                                      fist
                                     );

            for (int i = 1; i < size; i++) {
                sw.writeByte(JsonWriter.COMMA);
                kv = iterator.next();
                sw.writeString(kv._1);
                sw.writeByte(JsonWriter.SEMI);
                final JsValue keyValue = kv._2;
                valueSerializer.serialize(sw,
                                          keyValue
                                         );
            }
        }
        sw.writeByte(JsonWriter.OBJECT_END);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy