繁体   English   中英

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

[英]How to deserialize json with optional fields using Gson

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

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

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

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 207 column 23

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

感谢大家。

尝试下面的Gson实例

Gson gson = new GsonBuilder().serializeNulls().create();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM