ObjectMapper
@Test
public void test04() throws JsonProcessingException {
EnterpriseInfoDTO enterpriseInfoDTO = new EnterpriseInfoDTO();
People people =new People();
people.setId(1L);
people.setName("p-1");
people.setCafsCustId("cafs_p");
people.setAddressIdstring("ad_string");
people.setAge(33L);
Street street = new Street();
street.setName("aaa");
street.setAddressId(22L);
street.setCafsCustId("strr-cafst");
street.setId(3L);
// street.setPeople(people);
// people.setStreet(street);
enterpriseInfoDTO.setPeople(people);
enterpriseInfoDTO.setStreetList(Arrays.asList(street));
Person person =new Person();
person.setId(2L);
person.setBirthday(new Timestamp(LocalDateTime.now().getSecond()));
person.setName("zangs");
person.setSex("1");
enterpriseInfoDTO.setPerson(person);
ObjectMapper objectMapper = new ObjectMapper();
String value = objectMapper.writeValueAsString(enterpriseInfoDTO);
System.out.println(value);
Map map = objectMapper.readValue(value, Map.class);
System.out.println("json字符串转对象"+map);
EnterpriseInfoDTO enterpriseInfoDTO1 = objectMapper.convertValue(map, EnterpriseInfoDTO.class);
System.out.println("object等map转dto结果:"+enterpriseInfoDTO1);
}
************************************************
jackson json转bean忽略没有的字段 not marked as ignorable
@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:
@JsonIgnoreProperties({ "internalId", "secretKey" })
指定的字段不会被序列化和反序列化。
===========
代码会返回tes对象为null
正确在
class
上加
@JsonIgnoreProperties(ignoreUnknown =
true
)
public
class
tes
或者代码控制
ObjectMapper objectMapper =
new
ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false
);
objectMapper.readValue(json,cls);