Serialized Object to String
@Test
public void testSerialized() throws JacksonException {
//Jackson transfer Object tool
ObjectMapper objMapper = new ObjectMapper();
List<Buyer> buyers = new ArrayList<Buyer>(
List.of(new Buyer("1","Jeff"),new Buyer("2","Kevin")));
Order order = Order.builder()
.orderID(1)
.orderName("TSL")
.buyer(buyers).
time(new Date())
.des("Jackson test")
.build();
log.info(objMapper.writeValueAsString(order));
}
{“time”:“2023/05/06 06:37:32”,“orderName”:“TSL”,
“des”:“Jackson test”,“buy”:[{“id”:“1”,“name”:“Jeff”},
{“id”:“2”,“name”:“Kevin”}]}
Deserialized String to Object
Order orderSerialized = objMapper.readValue(
"{\"time\":\"2023/05/06 06:37:32\",
\"orderName\":\"TSL\",\"des\":\"Jackson test\",
\"buy\":[{\"id\":\"1\",\"name\":\"Jeff\"},
{\"id\":\"2\",\"name\":\"Kevin\"}]}",
Order.class);
System.out.println(orderSerialized);
Exception
在发序列化时,因缺少构造方法抛出InvalidDefinitionException: no Creator, cannot construct instance of object.
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance ofcom.book.springtest.Buyer
(no Creators, like default constructor, exist): cannot deserialize
from Object value (no delegate- or property-based Creator)