41 lines
1.2 KiB
Java
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);
|
||
|
}
|
||
|
}
|