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:

 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.

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.

Introduzca aquí la descripción de la imagen

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); 
  • Análisis de la cadena JSON de la URL (RESTful webservice) mediante las bibliotecas GSON. Androide
  • Tipo Advertencia de seguridad con Iterator JSON
  • ¿Cómo puedo extraer la cadena de JSON sin procesar de un objeto de respuesta de OkHttp?
  • Parse Android Volley respuesta JSONArray
  • Cómo configurar gson para excluir 0 valores enteros
  • ¿Por qué no hay un método remove (int position) en JSONArray de Android?
  • No se puede ver la respuesta JSON de php en android
  • Enviar notificación múltiple a GCM usando JSON
  • Cómo anidar objetos al crear JSON con JSONObject
  • Simple analizar JSON de URL en Android y mostrar en listview
  • ¿En qué formato (HTML / markdown / JSON) debo recibir algún texto formateado de mi servidor?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.