Jan*_*usz 94 java json camelcasing gson
我正在使用GSON将JSON数据转换为Java对象.它在我的所有测试中都运行良好.问题是我们的真实对象有一些名为is_online的属性.GSON只有在命名完全相同的情况下才会映射它们,如果让GSON将名称转换为Java camel case isOnline,那将是很好的.
在创建JSON数据时似乎可以这样做,驼峰案例在JSON中转换为下划线分隔的单词.但我无法找到另一种方法来指明这一点.
Ham*_*pei 290
我发现以下设置在读取带有下划线属性的json并在我的模型中使用camelcasing时非常有用.
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create()
Run Code Online (Sandbox Code Playgroud)
sas*_*oar 90
您可以使用SerializedName
注释:
@SerializedName("field_name_in_json")
private final String fieldNameInJava;
Run Code Online (Sandbox Code Playgroud)
注意:当您已经设置了一个时FieldNamingPolicy
,SerializedName
将覆盖该特定字段的设置(对于特殊情况非常方便).
请记住,您的示例是一种边缘情况。如果你有一个属性“foo”,它的 getter 应该命名为“getFoo”,如果你有一个名为“foo_bar”的属性,它的 getter 应该命名为“getFooBar”,但是,在你的示例中,你映射的是一个布尔值,并且布尔值有java 中的特殊情况命名约定。名为 online 的原始布尔属性应该有一个名为“isOnline”的 getter,而不是“getOnline”,甚至更糟糕的是“getIsOnline”。布尔包装对象(即 Boolean)不应该遵循这种特殊情况,并且名为“online”的属性应该有一个名为“getOnline”的 getter。
因此,名称中带有“is”的布尔属性是一种边缘情况,您需要在转换过程中删除这个特定的前缀。在相反的方向上,您的代码可能想要检查 json 对象的原始属性名称以及“is_XXX”版本。
归档时间: |
|
查看次数: |
45103 次 |
最近记录: |