문자열 만 포함하도록하려는 JSON 배열이 있습니다. Jackson은 정수와 날짜를 암시 적으로 문자열로 변환합니다. JSON 배열의 모든 요소가 사실 문자열인지 확인하고 싶습니다.Jackson JSON 매퍼가 암시 적으로 String으로 캐스팅하는 것을 중단하려면 어떻게해야합니까?
Object[] badModuleArray = new Object[]{"case", 1, 2, "employee", new Date()};
ObjectMapper objectMapper = new ObjectMapper();
String jsonModules = objectMapper.writeValueAsString(badModuleArray);
try
{
TypeFactory typeFactory = TypeFactory.defaultInstance();
mapper.readValue(modules, typeFactory.constructCollectionType(List.class, String.class));
}
catch(IOException e)
{
logger.error("something other than strings in JSON object");
}
위의 예에서 ObjectMapper는 정수, 날짜 등을 문자열로 변환하지 않습니다. JSON 배열의 각 요소가 문자열이 아닌 경우 예외가 throw되기를 원합니다. 이것이 가능한가?
올바른 내용입니다. 또 다른 가능성은'@JsonDeserialize (contentUsing = MyValueDeserializer.class)'를 사용하여 맞춤 컨텐츠 디시리얼라이저를 추가하여 검사를 수행하는 것입니다. – StaxMan