杰克逊转换器应抛出哪种异常类型以指示无效值

时间:2019-06-07 13:17:35

标签: java json jackson jackson-databind

通过以下注释,我可以告诉Jackson使用public function show(Book $book) { if ($book) { return new BookResource($book->load('ratings')); } else { return response()->json(['message' => 'Not found'], 404); } } 类对反序列化数据进行附加的后处理:

Converter

例如,以下转换器会将地图转换为自定义类型@JsonDeserialize(converter = MyConverter.class) public MyConstrainedMap property;

MyConstrainedMap

我的问题是:如果无法进行转换该怎么办?抛出杰克逊的例外之一是有道理的,例如public static class MyConverter extends StdConverter<Map<String, Object>, MyConstrainedMap> { @Override public MyConstrainedMap convert(Map<String, Object> rawMap) { // ... check values return new MyConstrainedMap(rawMap); } } ,但已检查该异常,并且JsonMappingException不允许任何检查的异常。

那我该怎么办。扔一个convert

1 个答案:

答案 0 :(得分:0)

(答案很简单,但是由于我在Internet上找不到这个问题的任何内容,因此我认为我还是会分享它。)

,如果无法转换某些内容,则抛出任何RuntimeException是正确的做法。然后,该异常将由Jackson包裹在JsonMappingException中,因此产生的行为与其他解析错误相同。