java-commons/muscript-gson/src/main/java/io/gitlab/jfronny/muscript/gson/impl/typed/DListSerializer.java
2023-08-25 16:24:28 +02:00

41 lines
1.2 KiB
Java

package io.gitlab.jfronny.muscript.gson.impl.typed;
import io.gitlab.jfronny.gson.TypeAdapter;
import io.gitlab.jfronny.gson.stream.*;
import io.gitlab.jfronny.muscript.data.dynamic.DList;
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
import io.gitlab.jfronny.muscript.data.dynamic.additional.DFinal;
import io.gitlab.jfronny.muscript.gson.impl.DynamicSerializer;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
public class DListSerializer extends TypeAdapter<DList> {
private final DynamicSerializer base;
public DListSerializer(DynamicSerializer base) {
this.base = base;
}
@Override
public void write(JsonWriter w, DList dynamic) throws IOException {
w.beginArray();
for (Dynamic value : dynamic.getValue()) {
base.write(w, value);
}
w.endArray();
}
@Override
public DList read(JsonReader r) throws IOException {
List<Dynamic> elements = new LinkedList<>();
r.beginArray();
while (r.peek() != JsonToken.END_ARRAY) {
elements.add(base.read(r));
}
r.endArray();
return DFinal.of(elements);
}
}