Formas de crear objetos JSON en Java
El siguiente es el cuerpo de JSON que quiero usar en mis aplicaciones iOS (Swift) y Android (Java).
{ "type" : "select", "args" : { "table" : "todo", "columns": ["id", "title","completed"], "where" : {"user_id": 1} } }
En Swift, es bastante sencillo y fácil de convertir lo anterior en un Diccionario:
- Cómo enviar json de android a php?
- Lectura de un Json Array en android
- ¿Cómo enviar la solicitud POST en JSON usando HTTPClient en Android?
- guardar una cadena en la memoria interna y luego mostrarla
- ¿Cómo buscar información de usuario de Google GAIA ID?
let params: [String: Any] = [ "type" : "select", "args" : [ "table" : "todo", "columns" : ["id","title","completed"], "where" : ["user_id" : 1] ] ]
En Java, estoy usando GSON para hacer lo anterior, pero siento que mi solución es fea y demasiado larga
public class SelectQuery { @SerializedName("type") String type = "select"; @SerializedName("args") Args args; public SelectTodoQuery(=) { args = new Args(); args.where = new Where(); args.where.userId = 1; } class Args { @SerializedName("table") String table = "todo"; @SerializedName("columns") String[] columns = { "id","title","completed" }; @SerializedName("where") Where where; } class Where { @SerializedName("user_id") Integer userId; } }
¿Hay una mejor manera de hacer esto en Java y también cómo se va a representar este JSON en Java de forma nativa, sin el uso de GSON?
ACTUALIZAR
No estoy pidiendo una lista de las bibliotecas que me ayudan a hacer lo anterior, ya sé de ellos y claramente estoy usando uno. Yo no necesito saber sobre su funcionamiento tampoco. Estoy pidiendo una mejor implementación (si existe) y si Java no proporciona tal característica, que puede ser una respuesta aceptada también. Además, un ejemplo para hacer lo mismo en Java.
- Tipo de incompatibilidad de JSON o org.json.jsonecxeption
- ¿Cómo puedo manejar valor nulo utilizando la función JSonobject.getInt?
- Cómo crear un objeto Json anidado en Java?
- Error org.json.JSONException: No hay valor para PROJECT_NAME Este es mi json
- ¿Cómo medir el tiempo de solicitud y respuesta del servidor?
- Android - Extraño EscapeUtil.unescapeString falla
- Obtención de imagen de la matriz de bytes en el objeto JSON a la aplicación de Android
- Json DateTime Parsing en Android
Bueno, hay varias libs disponibles para serializar y des-serializar objetos desde y hacia json
.
GSON es el más sencillo, puede convertir su POJO
(planear el antiguo objeto java) a JSON
sin anotarlos.
LoganSquare es la mejor biblioteca para este propósito, requiere que anote sus campos, pero el rendimiento es bastante alto.
La página de Github realmente cuenta sobre el estudio comparativo de LoganSquare vs otras opciones.
Hay algunos otros como Moshi y Jackson, pero teniendo en cuenta las limitaciones de la plataforma he encontrado LoganSquare
el mejor.
En lo que respecta a la capacidad Native, Java hasta el momento no proporciona ninguna utilidad de este tipo y si alguien no está interesado en
Third partylibs
, el proyecto que he mencionado anteriormente son todos los objetos de código abierto, se puede bifurcar e implementar su propia versión basada en Los usecases de uno.
Con Gson puedes intentar algo como esto, no estoy seguro acerca del tipo que quieres leer aquí:
final GsonBuilder builder = new GsonBuilder(); final Gson gson = builder.enableComplexMapKeySerialization().create(); final Type type = new TypeToken<Map<String, Args>>(){}.getType(); // deserialize from a string (read your file to string maybe) HashMap<String, Args> aMap = gson.fromJson(aJSONString, type);
- Android 7.1.1 Wifi Direct no puede crear grupo
- Cómo enviar archivos zip en el servidor utilizando el servicio de fondo en Android