【发布时间】:2018-06-02 18:18:16
【问题描述】:
我创建了一个通用方法,它是复杂类的转换器类和枚举的第二个。我有一个复杂的食谱类,所以我使用了@DynamoDBTypeConverted(converter = ObjectConverter.class)
这是我的转换器类:
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;
}
问题是当我尝试测试 CRUDs 方法时。我有 addProduct 方法,这个方法工作正常,我创建了 addRecipe 方法,它看起来几乎一样,但是在这里我在 Postman 中发帖时遇到问题,我收到了一个错误: “错误请求,无法解析 JSON”。
以及来自日志文件的信息:
“无法从 [Source: {"id":null,"name":"test","labels":["GLUTEN_FREE"],"author" 的 START_OBJECT 令牌中反序列化 java.util.ArrayList 的实例:{"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}; 行:1,列:190](通过引用链:pl.javamill.model.kitchen.Recipe["recipeElements"])"
有什么问题?
【问题讨论】:
标签: java json string amazon-web-services amazon-dynamodb