我正在使用Gson来反序列化给定API返回的JSON字符串,使用以下代码。
Gson gson = new Gson();
Map<String, CustomDto> test = gson.fromJson(result, new TypeToken<Map<String, CustomDto>>() {}.getType());
CustomDto
是由基本类型(int、long、boolean)和其他对象构建的对象。遇到的问题是这个对象是可选的。有时会传递这个对象,有时则没有。我原本期望如果JSON字符串中缺少某个字段,则不应调用相关的设置方法(就像在Jackson中一样),并且它应该可以正常工作,但不幸的是这不是情况,我遇到了异常:
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 207 column 23
如果我从
CustomDto
中删除该字段,它将正常工作,但这会导致传输问题。请问是否有一些注释可以在实体类中标记字段为可选的,或者是否有人能给我一些建议如何处理这个问题?谢谢大家。
CustomDto
з±»ж€–йЂ‚еҢ“зљ„з±»пәЊд»Ө帮助我们й‡ҚзҺ°ж‚Ёзљ„й”™иҮҮгЂ‚ - Sotirios Delimanolis