pojo用无效的java名称parsinggson

我正在从google-api-client使用youtube json

{ "apiVersion": "2.0", "data": { "updated": "2011-01-05T13:48:33.146Z", "totalItems": 4, "startIndex": 1, "itemsPerPage": 1, "items": [ { "id": "YfUzMkAlOBI", "uploaded": "2010-12-29T16:50:47.000Z", "updated": "2010-12-29T16:50:47.000Z", "uploader": "devandroidcs", "category": "Entertainment", "title": "Teste 2", "description": "Description do teste2", "tags": [ "mobile" ], "thumbnail": { "sqDefault": "http://i.ytimg.com/vi/YfUzMkAlOBI/default.jpg", "hqDefault": "http://i.ytimg.com/vi/YfUzMkAlOBI/hqdefault.jpg" }, "player": { "default": "http://www.youtube.com/watch?v\u003dYfUzMkAlOBI&feature\u003dyoutube_gdata_player", "mobile": "http://m.youtube.com/details?v\u003dYfUzMkAlOBI" } . . . } 

在这一点上,我应该创build一个名为默认在我的parsingJava类的字段名称。 已经做了这个parsing与其他领域的工作,问题是,默认是一个私人的Java名称,所以我不能调用默认的variables。

我怎么能pipe理呢?

Solutions Collecting From Web of "pojo用无效的java名称parsinggson"

我相信你的答案在于JSON字段命名支持 :

Gson支持一些预定义的字段命名策略,以将标准Java字段名称(即以小写字母开头的骆驼名称—“sampleFieldNameInJava”)转换为Json字段名称(即sample_field_name_in_java或SampleFieldNameInJava)。

看下面的例子:

 private class SomeObject { @SerializedName("custom_naming") private final String someField; private final String someOtherField; public SomeObject(String a, String b) { this.someField = a; this.someOtherField = b; } } 

所以你应该可以像这样定义字段映射到默认值:

 @SerializedName("default") private final String someOtherNameThanDefault; 

从我个人的经验来看,@Key在select错误的Jsonparsing器时可能无法用于序列化/反序列化。

(1)当你使用Gsonparsing器时,如下所示:

 GsonBuilder gsb = new GsonBuilder(); Gson gson = gsb.create(); OneDriveItem oneDriveItem = gson.fromJson(jasonData1, OneDriveItem.class); 

@Key不起作用,您应该使用@SerializedName来注释字段名称。

(2)从com.google.api.client.json包中使用JsonFactory时,如下所示:

  JacksonFactory jsonFactory=new JacksonFactory(); 

@Key应该可以工作。

如果对映射字段使用@Key注释,则只需使用可以传递给此注释的自定义值。 因此,请为您的字段select一个合法名称,并将其映射为@Key(“default”):

 @Key("default") private String defaultUrl;