GSON能否以不区分大小写的方式进行反序列化

Sam*_*erg 20 java json gson

在.NET桌面应用程序和Java服务器之间的原型通信中,使用带有JSON帖子的REST,我遇到了一个区分大小写的问题..NET对象在Pascal Casing中具有属性(这是.NET的常规属性),例如: Symbol, EntryValue(etc),而同一对象的Java表示使用驼峰外壳,例如symbol, entryValue.

服务器接收json值为:

{"EntrySize":100,"Symbol":"AMZN"}
Run Code Online (Sandbox Code Playgroud)

但Gson不会以不区分大小写的方式反序列化.有没有办法让Gson这样做?

Jef*_*ica 38

使用FieldNamingPolicyGsonBuilder,让你的Gson对象.你的似乎很匹配UPPER_CAMEL_CASE.

对于任何例外,使用注释注释您的类字段@SerializedName.

  • @Jeff Bowman 这实际上不是一个有效的解决方案,因为它不匹配不区分大小写。它仅与 SerializedName 中定义的内容或以驼峰式大小写形式的大字母开头的内容匹配。如果有一个以小写字母开头的json(没有Seri​​alizedName注释),它将不匹配。 (3认同)
  • 太棒了!使用UPPER_CAMEL_CASE策略可以轻松解决此问题。我们在文档中找到了吗?在急于进行测试时,我无法完全阅读文档,并且快速搜索并没有像您一样清楚地指出答案。谢谢! (2认同)
  • @Bevor:我同意这不是所有不区分大小写的请求的通用解决方案,无论如何这都会变得棘手。_如果您在同一个JSON对象中具有`entrysize`,`ENTRYSIZE`和`EntrySize`怎么办?哪个获胜?但是,它_允许_OP进行他们想做的事情,这是为了使服务器上的低级驼峰命名与客户端上的高级驼峰命名一起工作,而且似乎在有限的范围内社区发现答案很有用。 (2认同)