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.
- Widget de conexión de Android facebook: org.json.JSONException
- Convierta el Array de Java normal o ArrayList a Json Array en android
- El valor del tipo org.json.JSONArray no se puede convertir en JSONObject
- Diseño como la aplicación HotStar
- Múltiples elementos seleccionados RecyclerView in Activity.java
¿Cómo puedo manejar eso?
- XML vs JSON. ¿Cuál es mejor para almacenar un pequeño fragmento de datos?
- ¿Objeto raíz o no? ¿Cuál es la mejor práctica para las respuestas de la API?
- Escribir archivo .json y leer ese archivo en Android
- JSONObject.toString: cómo no escapar de barras
- Cómo cambiar el tipo de contenido de MappingJacksonHttpMessageConverter de application / json; charset = UTF-8 a application / json
- Cómo obtener la lista de usuarios en el análisis mediante la aplicación de Android
- ¿Cómo obtener la ubicación actual de este código de mapa? También intento recibir datos del vehículo del servidor cuando estoy abierto el mapa
- Cómo mantener múltiples google-service.json en Android Studio
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;
- No se puede obtener el atributo clipChildren = false para trabajar
- ¿Es posible ocultar una vista en android?