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理呢?

  • Java.lang.IllegalStateException:已连接
  • java.lang.IllegalStateException:期望BEGIN_OBJECT,但在第1行第62列是STRING
  • Android中的JSONparsing
  • Android M + Retrofit + JSON:无法使字段构造函数可访问
  • 在Android中使用GSON来解析复杂的JSON对象
  • jacksonJsonParseException:无效的UTF-8中间字节
  • 在Android视图中dynamic加载级联问题
  • 如何在Android Retrofit中忽略JSON元素
  • 我相信你的答案在于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;