Добрый день. Никак не могу понять, что хочет валидатор. Пробовал множество вариантов. Может я, конечно, не понял условие задачи - но классы меняются
package com.javarush.task.task33.task3304;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
/*
Конвертация из одного класса в другой используя JSON
*/
public class Solution {
public static void main(String[] args) throws IOException {
First inFirst = new First();
inFirst.list.add("qwe");
Second s = (Second) convertOneToAnother(inFirst, Second.class);
System.out.println(s.list);
First f = (First) convertOneToAnother(s, First.class);
System.out.println(f.list);
}
public static Object convertOneToAnother(Object one, Class resultClassObject) throws IOException {
ObjectMapper mapper = new ObjectMapper();
final String serialized = mapper.writeValueAsString(one);
mapper.disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
System.out.println(serialized);
return mapper.readValue(serialized, resultClassObject);
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property="className")
@JsonSubTypes(@JsonSubTypes.Type(value=First.class, name="first"))
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public static class First {
public int i;
public String name;
List list = new ArrayList<>();
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property="className")
@JsonSubTypes(@JsonSubTypes.Type(value=Second.class, name="second"))
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public static class Second {
public int i;
public String name;
List list = new ArrayList<>();
}
}