由于Android的成员变量前缀“mVariable”,Gson无法转换为java?

时间:2016-12-15 21:58:05

标签: android gson

我认为这是一个相当简单和频繁的问题,但令人惊讶的是,因为我无法在网上找到关于此主题的任何讨论。

很简单:Android的命名约定确保所有成员变量的名称以“m”开头,如“mId”,“mName”。我需要使用Gson将json对象转换为Pojo。但是,json对象的字段名称不以“m”前缀开头。因此无法转换。

我无法控制json格式,因为它是来自互联网的响应。我也不想改变项目中的所有成员变量,因为有很多。是否有任何解决方法,以便我仍然可以使用Gson进行转换?

另外我已经检查过Gson有FieldNamingPolicy你可以设置为匹配字段,但是只有4个预定义的策略,我无法找到添加自定义策略的方法。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用注释,但这意味着您仍然需要将更改应用于整个项目。

就像那样:

@SerializedName("name")
@Expose
String mName;

最终可能更容易重写POJO。您还可以使用http://www.jsonschema2pojo.org/等网站自动为您创建带注释的类。

仅仅是FYI,m只是AOSP上使用的代码的约定。在您的个人项目中,您可以随意使用您喜欢的任何内容,我个人讨厌m惯例,从未使用过它。 (Why do most fields (class members) in Android tutorial start with `m`?