mirror of https://github.com/alibaba/fastjson2.git
add testcase & refactor & bug fix
This commit is contained in:
parent
e1ead92e28
commit
e398e1d2e7
Binary file not shown.
|
@ -7,15 +7,14 @@ import com.alibaba.fastjson2.reader.ObjectReaders;
|
|||
import com.alibaba.fastjson2.writer.ObjectWriter;
|
||||
import com.alibaba.fastjson2.writer.ObjectWriters;
|
||||
|
||||
import static com.alibaba.fastjson2.reader.ObjectReaders.fieldReader;
|
||||
import static com.alibaba.fastjson2.reader.ObjectReaders.fieldReaderInt;
|
||||
import static com.alibaba.fastjson2.reader.ObjectReaders.*;
|
||||
|
||||
@JSONAutowired
|
||||
public class ImageMixin {
|
||||
public static final ObjectWriter<Image> objectWriter = ObjectWriters.objectWriter(
|
||||
Image.class,
|
||||
ObjectWriters.fieldWriter("height", Image::getHeight),
|
||||
ObjectWriters.fieldWriter("size", Image.Size.class, (Image e) -> e.getSize()),
|
||||
ObjectWriters.fieldWriter("size", Image.Size.class, Image::getSize),
|
||||
ObjectWriters.fieldWriter("title", Image::getTitle),
|
||||
ObjectWriters.fieldWriter("uri", Image::getUri),
|
||||
ObjectWriters.fieldWriter("width", Image::getWidth)
|
||||
|
@ -24,9 +23,9 @@ public class ImageMixin {
|
|||
public static final ObjectReader<Image> objectReader = ObjectReaders.of(
|
||||
Image::new,
|
||||
fieldReaderInt("height", Image::setHeight),
|
||||
fieldReader("size", Image.Size.class, (Image o, Image.Size v) -> o.setSize(v)),
|
||||
fieldReader("title", String.class, (Image o, String v) -> o.setTitle(v)),
|
||||
fieldReader("uri", String.class, (Image o, String v) -> o.setUri(v)),
|
||||
fieldReader("size", Image.Size.class, Image::setSize),
|
||||
fieldReaderString("title", Image::setTitle),
|
||||
fieldReaderString("uri", Image::setUri),
|
||||
fieldReaderInt("width", Image::setWidth)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.alibaba.fastjson2.writer.ObjectWriter;
|
|||
import com.alibaba.fastjson2.writer.ObjectWriters;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.alibaba.fastjson2.reader.ObjectReaders.*;
|
||||
|
||||
|
@ -18,13 +17,13 @@ import static com.alibaba.fastjson2.reader.ObjectReaders.*;
|
|||
public class MediaContentMixin {
|
||||
public static final ObjectWriter<MediaContent> objectWriter = ObjectWriters.objectWriter(
|
||||
MediaContent.class,
|
||||
ObjectWriters.fieldWriter("media", Media.class, (MediaContent e) -> e.getMedia()),
|
||||
ObjectWriters.fieldWriterList("images", Image.class, (MediaContent e) -> e.getImages())
|
||||
ObjectWriters.fieldWriter("media", Media.class, MediaContent::getMedia),
|
||||
ObjectWriters.fieldWriterList("images", Image.class, MediaContent::getImages)
|
||||
);
|
||||
|
||||
public static final ObjectReader<MediaContent> objectReader = ObjectReaders.of(
|
||||
MediaContent::new,
|
||||
fieldReader("media", Media.class, (MediaContent o, Media v) -> o.setMedia(v)),
|
||||
fieldReaderList("images", Image.class, ArrayList::new, (MediaContent o, List<Image> v) -> o.setImages(v))
|
||||
fieldReader("media", Media.class, MediaContent::setMedia),
|
||||
fieldReaderList("images", Image.class, ArrayList::new, MediaContent::setImages)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -7,26 +7,23 @@ import com.alibaba.fastjson2.reader.ObjectReaders;
|
|||
import com.alibaba.fastjson2.writer.ObjectWriter;
|
||||
import com.alibaba.fastjson2.writer.ObjectWriters;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.alibaba.fastjson2.reader.ObjectReaders.*;
|
||||
|
||||
@JSONAutowired
|
||||
public class MediaMixin {
|
||||
public static final ObjectWriter<Media> objectWriter = ObjectWriters.objectWriter(
|
||||
Media.class,
|
||||
ObjectWriters.fieldWriter("bitrate", (Media e) -> e.getBitrate()),
|
||||
ObjectWriters.fieldWriter("duration", (Media e) -> e.getDuration()),
|
||||
ObjectWriters.fieldWriter("format", (Media e) -> e.getFormat()),
|
||||
ObjectWriters.fieldWriter("height", (Media e) -> e.getHeight()),
|
||||
ObjectWriters.fieldWriterList("persons", String.class, (Media e) -> e.getPersons()),
|
||||
ObjectWriters.fieldWriter("player", Media.Player.class, (Media e) -> e.getPlayer()),
|
||||
ObjectWriters.fieldWriter("size", (Media e) -> e.getSize()),
|
||||
ObjectWriters.fieldWriter("title", (Media e) -> e.getTitle()),
|
||||
ObjectWriters.fieldWriter("uri", (Media e) -> e.getUri()),
|
||||
ObjectWriters.fieldWriter("width", (Media e) -> e.getWidth()),
|
||||
ObjectWriters.fieldWriter("copyright", (Media e) -> e.getCopyright())
|
||||
ObjectWriters.fieldWriter("bitrate", Media::getBitrate),
|
||||
ObjectWriters.fieldWriter("duration", Media::getDuration),
|
||||
ObjectWriters.fieldWriter("format", Media::getFormat),
|
||||
ObjectWriters.fieldWriter("height", Media::getHeight),
|
||||
ObjectWriters.fieldWriterListString("persons", Media::getPersons),
|
||||
ObjectWriters.fieldWriter("player", Media.Player.class, Media::getPlayer),
|
||||
ObjectWriters.fieldWriter("size", Media::getSize),
|
||||
ObjectWriters.fieldWriter("title", Media::getTitle),
|
||||
ObjectWriters.fieldWriter("uri", Media::getUri),
|
||||
ObjectWriters.fieldWriter("width", Media::getWidth),
|
||||
ObjectWriters.fieldWriter("copyright", Media::getCopyright)
|
||||
);
|
||||
|
||||
public static final ObjectReader<Media> objectReader = ObjectReaders.of(
|
||||
|
@ -35,8 +32,8 @@ public class MediaMixin {
|
|||
fieldReaderLong("duration", Media::setDuration),
|
||||
fieldReaderString("format", Media::setFormat),
|
||||
fieldReaderInt("height", Media::setHeight),
|
||||
fieldReaderList("persons", String.class, ArrayList::new, (Media o, List<String> v) -> o.setPersons(v)),
|
||||
fieldReader("player", Media.Player.class, (Media o, Media.Player v) -> o.setPlayer(v)),
|
||||
fieldReaderListStr("persons", Media::setPersons),
|
||||
fieldReader("player", Media.Player.class, Media::setPlayer),
|
||||
fieldReaderLong("size", Media::setSize),
|
||||
fieldReaderString("title", Media::setTitle),
|
||||
fieldReaderString("uri", Media::setUri),
|
||||
|
|
|
@ -2508,7 +2508,13 @@ public class ObjectReaderCreator {
|
|||
Class fieldClassResolved = null;
|
||||
|
||||
if (!(fieldType instanceof Class)) {
|
||||
fieldTypeResolved = BeanUtils.getFieldType(TypeReference.get(objectType), objectClass, method, fieldType);
|
||||
TypeReference<?> objectTypeReference;
|
||||
if (objectType == null) {
|
||||
objectTypeReference = null;
|
||||
} else {
|
||||
objectTypeReference = TypeReference.get(objectType);
|
||||
}
|
||||
fieldTypeResolved = BeanUtils.getFieldType(objectTypeReference, objectClass, method, fieldType);
|
||||
fieldClassResolved = TypeUtils.getMapping(fieldTypeResolved);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,11 @@ public class ObjectReaders {
|
|||
public static <T> ObjectReader<T> objectReader(
|
||||
Function<Map<Long, Object>, T> creator,
|
||||
FieldReader... fieldReaders) {
|
||||
return ObjectReaderCreator.INSTANCE.createObjectReaderNoneDefaultConstructor(null, creator, fieldReaders);
|
||||
return ObjectReaderCreator.INSTANCE.createObjectReaderNoneDefaultConstructor(
|
||||
null,
|
||||
creator,
|
||||
fieldReaders
|
||||
);
|
||||
}
|
||||
|
||||
public static FieldReader fieldReader(String fieldName, Class fieldClass) {
|
||||
|
@ -151,6 +155,13 @@ public class ObjectReaders {
|
|||
return new FieldReaderListFuncImpl<>(listCreator, null, function, itemType, fieldName);
|
||||
}
|
||||
|
||||
public static <T> FieldReader fieldReaderListStr(
|
||||
String fieldName,
|
||||
BiConsumer<T, List<String>> function
|
||||
) {
|
||||
return new FieldReaderListFuncImpl<>(ArrayList::new, null, function, String.class, fieldName);
|
||||
}
|
||||
|
||||
public static <T, V> FieldReader fieldReaderList(
|
||||
String fieldName,
|
||||
Type itemType,
|
||||
|
|
|
@ -1480,15 +1480,21 @@ public abstract class BeanUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static Type getFieldType(TypeReference type, Class<?> raw, Member field, Type fieldType) {
|
||||
Class<?> declaringClass = field.getDeclaringClass();
|
||||
public static Type getFieldType(TypeReference typeReference, Class<?> raw, Member field, Type fieldType) {
|
||||
Class<?> declaringClass;
|
||||
if (field == null) {
|
||||
declaringClass = null;
|
||||
} else {
|
||||
declaringClass = field.getDeclaringClass();
|
||||
}
|
||||
|
||||
while (raw != Object.class) {
|
||||
Type type = typeReference == null ? null : typeReference.getType();
|
||||
if (declaringClass == raw) {
|
||||
return resolve(type.getType(), declaringClass, fieldType);
|
||||
return resolve(type, declaringClass, fieldType);
|
||||
}
|
||||
type = TypeReference.get(resolve(type.getType(), raw, raw.getGenericSuperclass()));
|
||||
raw = type.getRawType();
|
||||
typeReference = TypeReference.get(resolve(type, raw, raw.getGenericSuperclass()));
|
||||
raw = typeReference.getRawType();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,9 @@ import com.alibaba.fastjson2.function.ToByteFunction;
|
|||
import com.alibaba.fastjson2.function.ToFloatFunction;
|
||||
import com.alibaba.fastjson2.function.ToShortFunction;
|
||||
import com.alibaba.fastjson2.util.ParameterizedTypeImpl;
|
||||
import com.alibaba.fastjson2.util.TypeUtils;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
import java.util.function.*;
|
||||
|
@ -25,7 +27,7 @@ public class ObjectWriters {
|
|||
return INSTANCE.createObjectWriter(objectType, fieldWriters);
|
||||
}
|
||||
|
||||
public static ObjectWriter of(Class objectType, FieldWriter... fieldWriters) {
|
||||
public static <T> ObjectWriter<T> of(Class<T> objectType, FieldWriter... fieldWriters) {
|
||||
return INSTANCE.createObjectWriter(objectType, fieldWriters);
|
||||
}
|
||||
|
||||
|
@ -124,6 +126,16 @@ public class ObjectWriters {
|
|||
}
|
||||
|
||||
public static <T, V> FieldWriter fieldWriterList(String fieldName, Class<V> itemType, Function<T, List<V>> function) {
|
||||
return INSTANCE.createFieldWriter(fieldName, new ParameterizedTypeImpl(List.class, itemType), List.class, function);
|
||||
ParameterizedType listType;
|
||||
if (itemType == String.class) {
|
||||
listType = TypeUtils.PARAM_TYPE_LIST_STR;
|
||||
} else {
|
||||
listType = new ParameterizedTypeImpl(List.class, itemType);
|
||||
}
|
||||
return INSTANCE.createFieldWriter(fieldName, listType, List.class, function);
|
||||
}
|
||||
|
||||
public static <T> FieldWriter fieldWriterListString(String fieldName, Function<T, List<String>> function) {
|
||||
return INSTANCE.createFieldWriter(fieldName, TypeUtils.PARAM_TYPE_LIST_STR, List.class, function);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,10 @@ package com.alibaba.fastjson2.reader;
|
|||
|
||||
import com.alibaba.fastjson2.JSONReader;
|
||||
import com.alibaba.fastjson2.util.Fnv;
|
||||
import com.alibaba.fastjson2.util.TypeUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
|
@ -143,6 +145,17 @@ public class ObjectReadersTest {
|
|||
assertEquals("12.34", bean.value);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testString_1() {
|
||||
ObjectReader<Bean5> objectReader = ObjectReaders.objectReader(
|
||||
Bean5.class,
|
||||
Bean5::new,
|
||||
fieldReader("value", String.class, String.class, Bean5::setValue)
|
||||
);
|
||||
Bean5 bean = objectReader.readObject(JSONReader.of("{\"value\":\"12.34\"}"));
|
||||
assertEquals("12.34", bean.value);
|
||||
}
|
||||
|
||||
static class Bean5 {
|
||||
private String value;
|
||||
|
||||
|
@ -154,4 +167,55 @@ public class ObjectReadersTest {
|
|||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testList() {
|
||||
ObjectReader<Bean6> objectReader = ObjectReaders.objectReader(
|
||||
Bean6.class,
|
||||
Bean6::new,
|
||||
fieldReaderListStr("value", Bean6::setValues)
|
||||
);
|
||||
Bean6 bean = objectReader.readObject(JSONReader.of("{\"value\":[\"12\",\"34\"]}"));
|
||||
assertEquals(2, bean.values.size());
|
||||
assertEquals("12", bean.values.get(0));
|
||||
assertEquals("34", bean.values.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testList_1() {
|
||||
ObjectReader<Bean6> objectReader = ObjectReaders.objectReader(
|
||||
Bean6.class,
|
||||
Bean6::new,
|
||||
fieldReaderList("value", String.class, Bean6::setValues)
|
||||
);
|
||||
Bean6 bean = objectReader.readObject(JSONReader.of("{\"value\":[\"12\",\"34\"]}"));
|
||||
assertEquals(2, bean.values.size());
|
||||
assertEquals("12", bean.values.get(0));
|
||||
assertEquals("34", bean.values.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testList_2() {
|
||||
ObjectReader<Bean6> objectReader = ObjectReaders.objectReader(
|
||||
Bean6.class,
|
||||
Bean6::new,
|
||||
fieldReader("value", TypeUtils.PARAM_TYPE_LIST_STR, List.class, Bean6::setValues)
|
||||
);
|
||||
Bean6 bean = objectReader.readObject(JSONReader.of("{\"value\":[\"12\",\"34\"]}"));
|
||||
assertEquals(2, bean.values.size());
|
||||
assertEquals("12", bean.values.get(0));
|
||||
assertEquals("34", bean.values.get(1));
|
||||
}
|
||||
|
||||
static class Bean6 {
|
||||
private List<String> values;
|
||||
|
||||
public List<String> getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void setValues(List<String> values) {
|
||||
this.values = values;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,13 +1,15 @@
|
|||
package com.alibaba.fastjson2.writer;
|
||||
|
||||
import com.alibaba.fastjson2.JSONWriter;
|
||||
import com.alibaba.fastjson2.util.TypeUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.ToIntFunction;
|
||||
import java.util.function.ToLongFunction;
|
||||
|
||||
import static com.alibaba.fastjson2.writer.ObjectWriters.fieldWriter;
|
||||
import static com.alibaba.fastjson2.writer.ObjectWriters.objectWriter;
|
||||
import static com.alibaba.fastjson2.writer.ObjectWriters.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class ObjectWritersTest {
|
||||
|
@ -114,4 +116,173 @@ public class ObjectWritersTest {
|
|||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() throws Exception {
|
||||
ObjectWriter<Bean3> objectWriter = ObjectWriters.of(
|
||||
Bean3.class,
|
||||
fieldWriterListString("names", Bean3::getNames)
|
||||
);
|
||||
|
||||
Bean3 bean = new Bean3();
|
||||
bean.names = new ArrayList<>();
|
||||
bean.names.add("1");
|
||||
bean.names.add("2");
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"names\":[\"1\",\"2\"]}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3_1() throws Exception {
|
||||
ObjectWriter<Bean3> objectWriter = ObjectWriters.of(
|
||||
Bean3.class,
|
||||
fieldWriterList("names", String.class, Bean3::getNames)
|
||||
);
|
||||
|
||||
Bean3 bean = new Bean3();
|
||||
bean.names = new ArrayList<>();
|
||||
bean.names.add("1");
|
||||
bean.names.add("2");
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"names\":[\"1\",\"2\"]}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3_2() throws Exception {
|
||||
ObjectWriter<Bean3> objectWriter = ObjectWriters.of(
|
||||
Bean3.class,
|
||||
fieldWriter("names", TypeUtils.PARAM_TYPE_LIST_STR, List.class, Bean3::getNames)
|
||||
);
|
||||
|
||||
Bean3 bean = new Bean3();
|
||||
bean.names = new ArrayList<>();
|
||||
bean.names.add("1");
|
||||
bean.names.add("2");
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"names\":[\"1\",\"2\"]}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
public static class Bean3 {
|
||||
private List<String> names;
|
||||
|
||||
public List<String> getNames() {
|
||||
return names;
|
||||
}
|
||||
|
||||
public void setNames(List<String> names) {
|
||||
this.names = names;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4() throws Exception {
|
||||
ObjectWriter<Bean4> objectWriter = ObjectWriters.of(
|
||||
Bean4.class,
|
||||
fieldWriterList("names", Long.class, Bean4::getNames)
|
||||
);
|
||||
|
||||
Bean4 bean = new Bean4();
|
||||
bean.names = new ArrayList<>();
|
||||
bean.names.add(1L);
|
||||
bean.names.add(2L);
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"names\":[1,2]}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
public static class Bean4 {
|
||||
private List<Long> names;
|
||||
|
||||
public List<Long> getNames() {
|
||||
return names;
|
||||
}
|
||||
|
||||
public void setNames(List<Long> names) {
|
||||
this.names = names;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFloat() throws Exception {
|
||||
ObjectWriter<Bean5> objectWriter = ObjectWriters.of(
|
||||
Bean5.class,
|
||||
fieldWriter("value", Bean5::getValue)
|
||||
);
|
||||
|
||||
Bean5 bean = new Bean5();
|
||||
bean.value = 12.0F;
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"value\":12.0}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
public static class Bean5 {
|
||||
private Float value;
|
||||
|
||||
public Float getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDouble() throws Exception {
|
||||
ObjectWriter<Bean6> objectWriter = ObjectWriters.of(
|
||||
Bean6.class,
|
||||
fieldWriter("value", Bean6::getValue)
|
||||
);
|
||||
|
||||
Bean6 bean = new Bean6();
|
||||
bean.value = 12.0D;
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"value\":12.0}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
public static class Bean6 {
|
||||
private Double value;
|
||||
|
||||
public Double getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoolean() throws Exception {
|
||||
ObjectWriter<Bean7> objectWriter = ObjectWriters.of(
|
||||
Bean7.class,
|
||||
fieldWriter("value", Bean7::getValue)
|
||||
);
|
||||
|
||||
Bean7 bean = new Bean7();
|
||||
bean.value = true;
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"value\":true}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoolean_1() throws Exception {
|
||||
ObjectWriter<Bean7> objectWriter = ObjectWriters.objectWriter(
|
||||
Bean7.class,
|
||||
0,
|
||||
fieldWriter("value", Bean7::getValue)
|
||||
);
|
||||
|
||||
Bean7 bean = new Bean7();
|
||||
bean.value = true;
|
||||
JSONWriter jsonWriter = JSONWriter.of();
|
||||
objectWriter.write(jsonWriter, bean);
|
||||
assertEquals("{\"value\":true}", jsonWriter.toString());
|
||||
}
|
||||
|
||||
public static class Bean7 {
|
||||
private Boolean value;
|
||||
|
||||
public Boolean getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,29 +69,29 @@ public class App {
|
|||
private static void registerReaderAndWriter() {
|
||||
JSON.register(MediaContent.class, ObjectWriters.objectWriter(
|
||||
MediaContent.class,
|
||||
ObjectWriters.fieldWriter("media", Media.class, (MediaContent e) -> e.getMedia()),
|
||||
ObjectWriters.fieldWriterList("images", Image.class, (MediaContent e) -> e.getImages())
|
||||
ObjectWriters.fieldWriter("media", Media.class, MediaContent::getMedia),
|
||||
ObjectWriters.fieldWriterList("images", Image.class, MediaContent::getImages)
|
||||
));
|
||||
|
||||
JSON.register(MediaContent.class, ObjectReaders.of(
|
||||
MediaContent::new,
|
||||
fieldReader("media", Media.class, (MediaContent o, Media v) -> o.setMedia(v)),
|
||||
fieldReaderList("images", Image.class, ArrayList::new, (MediaContent o, List<Image> v) -> o.setImages(v))
|
||||
fieldReader("media", Media.class, MediaContent::setMedia),
|
||||
fieldReaderList("images", Image.class, ArrayList::new, MediaContent::setImages)
|
||||
));
|
||||
|
||||
JSON.register(Media.class, ObjectWriters.objectWriter(
|
||||
Media.class,
|
||||
ObjectWriters.fieldWriter("bitrate", (Media e) -> e.getBitrate()),
|
||||
ObjectWriters.fieldWriter("duration", (Media e) -> e.getDuration()),
|
||||
ObjectWriters.fieldWriter("format", (Media e) -> e.getFormat()),
|
||||
ObjectWriters.fieldWriter("height", (Media e) -> e.getHeight()),
|
||||
ObjectWriters.fieldWriterList("persons", String.class, (Media e) -> e.getPersons()),
|
||||
ObjectWriters.fieldWriter("player", Player.class, (Media e) -> e.getPlayer()),
|
||||
ObjectWriters.fieldWriter("size", (Media e) -> e.getSize()),
|
||||
ObjectWriters.fieldWriter("title", (Media e) -> e.getTitle()),
|
||||
ObjectWriters.fieldWriter("uri", (Media e) -> e.getUri()),
|
||||
ObjectWriters.fieldWriter("width", (Media e) -> e.getWidth()),
|
||||
ObjectWriters.fieldWriter("copyright", (Media e) -> e.getCopyright())
|
||||
ObjectWriters.fieldWriter("bitrate", Media::getBitrate),
|
||||
ObjectWriters.fieldWriter("duration", Media::getDuration),
|
||||
ObjectWriters.fieldWriter("format", Media::getFormat),
|
||||
ObjectWriters.fieldWriter("height", Media::getHeight),
|
||||
ObjectWriters.fieldWriterList("persons", String.class, Media::getPersons),
|
||||
ObjectWriters.fieldWriter("player", Player.class, Media::getPlayer),
|
||||
ObjectWriters.fieldWriter("size", Media::getSize),
|
||||
ObjectWriters.fieldWriter("title", Media::getTitle),
|
||||
ObjectWriters.fieldWriter("uri", Media::getUri),
|
||||
ObjectWriters.fieldWriter("width", Media::getWidth),
|
||||
ObjectWriters.fieldWriter("copyright", Media::getCopyright)
|
||||
));
|
||||
|
||||
JSON.register(Media.class, ObjectReaders.of(
|
||||
|
@ -100,8 +100,8 @@ public class App {
|
|||
fieldReaderLong("duration", Media::setDuration),
|
||||
fieldReaderString("format", Media::setFormat),
|
||||
fieldReaderInt("height", Media::setHeight),
|
||||
fieldReaderList("persons", String.class, ArrayList::new, (Media o, List<String> v) -> o.setPersons(v)),
|
||||
fieldReader("player", Player.class, (Media o, Player v) -> o.setPlayer(v)),
|
||||
fieldReaderList("persons", String.class, ArrayList::new, Media::setPersons),
|
||||
fieldReader("player", Player.class, Media::setPlayer),
|
||||
fieldReaderLong("size", Media::setSize),
|
||||
fieldReaderString("title", Media::setTitle),
|
||||
fieldReaderString("uri", Media::setUri),
|
||||
|
@ -112,7 +112,7 @@ public class App {
|
|||
JSON.register(Image.class, ObjectWriters.objectWriter(
|
||||
Image.class,
|
||||
ObjectWriters.fieldWriter("height", Image::getHeight),
|
||||
ObjectWriters.fieldWriter("size", Size.class, (Image e) -> e.getSize()),
|
||||
ObjectWriters.fieldWriter("size", Size.class, Image::getSize),
|
||||
ObjectWriters.fieldWriter("title", Image::getTitle),
|
||||
ObjectWriters.fieldWriter("uri", Image::getUri),
|
||||
ObjectWriters.fieldWriter("width", Image::getWidth)
|
||||
|
@ -121,9 +121,9 @@ public class App {
|
|||
JSON.register(Image.class, ObjectReaders.of(
|
||||
Image::new,
|
||||
fieldReaderInt("height", Image::setHeight),
|
||||
fieldReader("size", Size.class, (Image o, Size v) -> o.setSize(v)),
|
||||
fieldReader("title", String.class, (Image o, String v) -> o.setTitle(v)),
|
||||
fieldReader("uri", String.class, (Image o, String v) -> o.setUri(v)),
|
||||
fieldReader("size", Size.class, Image::setSize),
|
||||
fieldReaderString("title", Image::setTitle),
|
||||
fieldReaderString("uri", Image::setUri),
|
||||
fieldReaderInt("width", Image::setWidth)
|
||||
));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue