Pojo analiza gson con nombres de java no válidos

Estoy trabajando con el youtube json de google-api-client:

{ "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" } . . . } 

En este punto debo crear un nombre de campo llamado default en mi clase java parse. Ya he hecho este trabajo de análisis con los otros campos, el problema es que, por defecto es un nombre privado de java, así que no puedo llamar a una variable predeterminada.

¿Cómo puedo manejar eso?

Creo que su respuesta se encuentra en el JSON Field Naming Support :

Gson apoya algunas políticas predefinidas de nombres de campos para convertir los nombres de campos Java estándar (es decir, nombres de camellos que empiezan con minúsculas — "sampleFieldNameInJava") a un nombre de campo Json (ie nombre_nombre_de_proyecto_en_java o Ejemplo_nombre_de_Mostra enJava).

Véase, por ejemplo, el siguiente ejemplo:

 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; } } 

Por lo tanto, debería ser capaz de definir la correlación de campos con el valor predeterminado como este:

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

Apenas decirlo de mi experiencia personal, @Key puede no trabajar en la serialización / de-serialización al elegir el parser incorrecto de Json.

(1) Cuando utilice el analizador de Gson, como abajo:

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

@Key no funciona, debe utilizar @SerializedName para anotar el nombre del campo.

(2) Cuando utiliza JsonFactory desde el paquete com.google.api.client.json, como a continuación:

  JacksonFactory jsonFactory=new JacksonFactory(); 

@Key debería funcionar.

Si está utilizando la anotación @Key para los campos asignados, sólo necesita hacer uso de un valor personalizado que se puede pasar a esta anotación. Así que elige un nombre legal para tu campo y asignalo como @Key ("default"):

 @Key("default") private String defaultUrl; 
  • HttpMethod.Delete no funciona con RestTemplate de primavera-Android
  • ¿Está google gson funcionando en android?
  • Lectura de un archivo json en Android
  • ¿Cómo comprobar si la respuesta del servidor es JSONAobject o JSONArray?
  • Determine si JSON es un JSONObject o JSONArray
  • Uso de Gson para analizar subclases con diferentes campos
  • Publicar Método utilizando Volley no funciona
  • Conversión de cadena a json objeto android
  • Análisis de JSON en android: desde la carpeta de recursos
  • JSON Array iteration en Android / Java
  • Cómo analizar una clave JSON dinámica en un resultado anidado JSON?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.