複雑なクラスのコンバータークラスと列挙型の2番目のコンバータークラスを作成しました。AWS DynamoDB - コンバータクラス - "JSONを解析できません"
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;
}
これは、列挙型のためのコンバータクラスです:
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;
}
私は複雑であり、レシピのクラスを持っているので、私はこれは私のコンバータクラスである@DynamoDBTypeConverted(コンバータ= ObjectConverter.class)
を使用しました問題はCRUDのメソッドをテストしようとするときです。私は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のインスタンスを逆シリアル化できません" –
@ D.Zet私はこれがいくつかの古いデータのためでなければならないと思う。このオブジェクトが使われているクラスの内容は何ですか? – Vikdor
質問を編集しました。詳細を確認してください –