首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用GSON将JSON样式属性名称转换为Java CamelCase名称

使用GSON将JSON样式属性名称转换为Java CamelCase名称
EN

Stack Overflow用户
提问于 2010-03-03 19:28:46
回答 4查看 59K关注 0票数 120

我正在使用GSON将我得到的JSON数据转换成一个Java对象。它在我的所有测试中都工作得很好。问题是我们的真实对象有一些像is_online这样的属性。GSON只有在它们命名完全相等的情况下才会映射它们,如果GSON能将它们的名字转换成Java camel case isOnline就更好了。

在创建JSON数据时,这似乎是可能的,驼峰大小写在JSON中被转换为下划线分隔的单词。但我找不到另一种方法来指定这一点。

EN

回答 4

Stack Overflow用户

发布于 2012-08-05 00:26:49

我发现以下设置在阅读带有下划线属性的json并在我的模型中使用驼峰格式时非常有效。

代码语言:javascript
复制
Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
    .create()
票数 339
EN

Stack Overflow用户

发布于 2013-10-21 18:23:40

您可以使用SerializedName注释:

代码语言:javascript
复制
@SerializedName("field_name_in_json")
private final String fieldNameInJava;

注意:当你已经设置了一个FieldNamingPolicySerializedName将会覆盖它对特定字段的设置(在特殊情况下非常方便)。

票数 108
EN

Stack Overflow用户

发布于 2010-09-09 21:37:26

请记住,您的示例是一种边缘情况。如果你有一个属性'foo‘,它的getter应该被命名为'getFoo',如果你有一个名为'foo_bar’的属性,它的获取方法应该被命名为'getFooBar',然而,在你的例子中,你映射了一个布尔值,并且布尔值在java中有特殊的命名约定。名为online的原始布尔属性应该有一个名为'isOnline‘的getter,而不是名为'getOnline’或更糟的'getIsOnline‘。布尔型包装器对象(即布尔型)不应遵循这种特殊情况,名为“online”的属性应具有名为“getOnline”的getter。

因此,在名称中带有' is‘的布尔属性是一种边缘情况,在这种情况下,您将希望在转换过程中去掉这个特定的前缀。相反,您的代码可能希望同时检查json对象的原始属性名称和“is_XXX”版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2370745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档