복잡한 클래스의 변환기 클래스와 열거 형의 두 번째 메서드 인 일반 메서드를 만들었습니다.AWS DynamoDB - 변환기 클래스 - "요청이 잘못되어 JSON을 구문 분석 할 수 없습니다."
public class EnumConverter<T extends Object> implements DynamoDBTypeConverter<String, List<T>> {
@Override
public String convert(List<T> objects) {
//Jackson object mapper
ObjectMapper objectMapper = new ObjectMapper();
try {
String objectsString = objectMapper.writeValueAsString(objects);
return objectsString;
} catch (JsonProcessingException e) {
//do something
}
return null;
}
@Override
public List<T> unconvert(String objectsString) {
ObjectMapper objectMapper = new ObjectMapper();
try {
List<T> objects = objectMapper.readValue(objectsString, new TypeReference<List<T>>() {
});
return objects;
} catch (JsonParseException e) {
//do something
} catch (JsonMappingException e) {
//do something
} catch (IOException e) {
//do something
}
return null;
}
:
public class ObjectConverter<T extends Object> implements DynamoDBTypeConverter<String, T> {
ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convert(T object) {
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
throw new IllegalArgumentException("Unable to parse JSON");
}
@Override
public T unconvert(String object) {
try {
T unconvertedObject = objectMapper.readValue(object, new TypeReference<T>() {
});
return unconvertedObject;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
이 열거 형 변환기 클래스입니다 : 나는
이 내 컨버터 클래스 복잡 레시피 클래스는 그래서 @DynamoDBTypeConverted (변환 = ObjectConverter.class)를 사용하는이 문제는 내가 CRUDs 메서드를 테스트하려고 할 때 .. addProduct 메서드가 있고이 하나는 잘 작동합니다. addRecipe 메서드를 만들었고 거의 비슷하게 보이지만 Postman에 게시하는 동안 문제가 발생했습니다. 오류가 발생했습니다. "잘못된 요청 , JSON을 구문 분석 할 수 없습니다. " 로그 파일에서
그리고 정보 :
"Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: {"id":null,"name":"test","labels":["GLUTEN_FREE"],"author":{"name":"Plejer Annołn","id":"testID2"},"media":{"name":"heheszki","url":" http://blabla.pl ","mediaType":"IMAGE"},"recipeElements":{"product":{"id":927c3ed3-400b-433d-9da0-1aa111dce584,"name":"bąkiKacpraNieŚmierdzą","calories":1000,"fat":400.0,"carbo":20.0,"protein":40.0,"productKinds":["MEAT"],"author":{"name":"Plejer Annołn","id":"testID2"},"media":{"name":"heheszki","url":" http://blabla.pl ","mediaType":"IMAGE"},"approved":false},"weight":"100"},"approved":false}; line: 1, column: 190] (through reference chain: pl.javamill.model.kitchen.Recipe["recipeElements"])"
것은 무엇 잘못 될 수 있는가?
로그 파일에 다음 정보가 있습니다. "com.fasterxml.jackson.databind.JsonMappingException : recipeElement의 START_OBJECT 토큰에서 java.util.ArrayList의 인스턴스를 deserialize 할 수 없습니다" –
@ D.Zet 이 데이터는 일부 이전 데이터에 대한 것으로 판단됩니다. 이 객체가 사용되는 클래스의 내용은 무엇입니까? – Vikdor
안녕하세요, 제 질문을 수정했습니다. 자세한 내용을 확인하시기 바랍니다. –