小编Tom*_*Tom的帖子

如何使用Gson使用可选字段反序列化json

我正在使用Gson使用以下代码从给定的API反序列化JSON字符串.

Gson gson = new Gson();
Map<String, CustomDto> test = gson.fromJson(result, new TypeToken<Map<String, CustomDto>>() {}.getType());
Run Code Online (Sandbox Code Playgroud)

CustomDto是一个由基元(int,long,boolean)和另一个Object构造的对象.我遇到的问题是这个Object是可选的.有时它会被传播,有时它不存在.我期待如果JSON字符串中缺少一个字段,不应该调用相关的set方法(比如杰克逊),它应该只是工作不幸的情况并非如此,我遇到了异常:

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 207 column 23
Run Code Online (Sandbox Code Playgroud)

如果我从中删除该字段CustomDto,它只是工作正常但是如果它将被传输则存在问题.请问是否有一些注释标记实体类中的可选字段,或者有人可以给我一些建议如何处理这个?

感谢大家.

java json gson

4
推荐指数
1
解决办法
5006
查看次数

标签 统计

gson ×1

java ×1

json ×1