我认为这是一个相当简单和频繁的问题,但令人惊讶的是,因为我无法在网上找到关于此主题的任何讨论。
很简单:Android的命名约定确保所有成员变量的名称以“m”开头,如“mId”,“mName”。我需要使用Gson将json对象转换为Pojo。但是,json对象的字段名称不以“m”前缀开头。因此无法转换。
我无法控制json格式,因为它是来自互联网的响应。我也不想改变项目中的所有成员变量,因为有很多。是否有任何解决方法,以便我仍然可以使用Gson进行转换?
另外我已经检查过Gson有FieldNamingPolicy你可以设置为匹配字段,但是只有4个预定义的策略,我无法找到添加自定义策略的方法。
谢谢!
答案 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`?)