я установил вывод и вот что получилось до и после
{"className":"first","i":0,"name":null}
{"className":"second","i":0,"name":null}
{"className":"second","i":0,"name":null}
{"className":"first","i":0,"name":null}
... или я чего не понял в условии задачи ?
package com.javarush.task.task33.task3304;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
/*
Конвертация из одного класса в другой используя JSON Ӏ 3304
*/
public class Solution {
public static void main(String[] args) throws IOException {
Second s = (Second) convertOneToAnother(new First(), Second.class);
First f = (First) convertOneToAnother(new Second(), First.class);
}
public static Object convertOneToAnother(Object one, Class resultClassObject) throws IOException {
ObjectMapper mapper = new ObjectMapper();
// mapper.disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
String strObj = mapper.writeValueAsString(one);
System.out.println(strObj);
try {
strObj = strObj.replace("\"className\":\"" + one.getClass().getSimpleName().toLowerCase() + "\"",
"\"className\":\"" + resultClassObject.getSimpleName().toLowerCase() + "\"");
System.out.println(strObj);
}
catch (Exception e) {
e.printStackTrace();
}
return mapper.readValue(strObj, resultClassObject);
// return null;
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "className")
@JsonSubTypes(@JsonSubTypes.Type(value = First.class, name = "first"))
public static class First {
public int i;
public String name;
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "className")
@JsonSubTypes(@JsonSubTypes.Type(value = Second.class, name = "second"))
public static class Second {
public int i;
public String name;
}
}