Me gustaría enviar mensajes en forma de objetos JSON a un servidor y analizar la respuesta JSON del servidor.
Ejemplo de objeto JSON
{
"post": {
"username": "John Doe",
"message": "test message",
"image": "image url",
"time": "current time"
}
}
Estoy tratando de analizar el JSON manualmente yendo atributo por atributo. ¿Hay alguna biblioteca / utilidad que pueda usar para facilitar este proceso?
Respuestas:
Me sorprende que no se hayan mencionado: pero en lugar de utilizar el proceso básico en lugar del manual con el pequeño paquete de json.org, GSon y Jackson son mucho más cómodos de usar. Entonces:
Por lo tanto, puede vincularse a sus propios POJO, no a algunos nodos de árbol a medias o Listas y mapas. (y al menos Jackson permite la vinculación a tales cosas también (quizás GSON también, no estoy seguro), JsonNode, Map, List, si realmente quiere estos en lugar de objetos 'reales')
EDITAR 19-MAR-2014:
Otro nuevo contendiente es la biblioteca Jackson jr : utiliza el mismo analizador / generador de Streaming rápido que Jackson (
jackson-core
), pero la parte de enlace de datos es pequeña (50kB). La funcionalidad es más limitada (sin anotaciones, solo Java Beans normales), pero el rendimiento en cuanto a rendimiento debería ser rápido, y la sobrecarga de inicialización (primera llamada) también muy baja. Por lo tanto, podría ser una buena opción, especialmente para aplicaciones más pequeñas.fuente
Puede usar org.json.JSONObject y org.json.JSONTokener . no necesita ninguna biblioteca externa ya que estas clases vienen con Android SDK
fuente
GSON es más fácil de usar y el camino a seguir si los datos tienen una estructura definida.
Descargar gson .
Agréguelo a las bibliotecas referenciadas.
Código para la clase Post
fuente
Esta es la clase JsonParser
Nota: DefaultHttpClient ya no es compatible con sdk 23, por lo que es aconsejable usar target sdk 21 con este código.
fuente
Realmente no hay nada para JSON. Los corchetes son para "objetos" (matrices asociativas) y los corchetes son para matrices sin claves (indexadas numéricamente). En cuanto a trabajar con él en Android, hay clases preparadas para eso incluidas en el SDK (no se requiere descarga).
Echa un vistazo a estas clases: http://developer.android.com/reference/org/json/package-summary.html
fuente
Otras respuestas han señalado a Jackson y GSON, las populares bibliotecas JSON adicionales para Android, y json.org, el paquete JSON básico que se incluye en Android.
Pero creo que también vale la pena señalar que Android ahora tiene su propia API JSON con todas las funciones.
Esto se agregó en Honeycomb: API nivel 11.
Esto comprende
- android.util.JsonReader: docs , y source
- android.util.JsonWriter: docs , y source
También agregaré una consideración adicional que me empuja hacia Jackson y GSON: he encontrado útil utilizar bibliotecas de terceros en lugar de paquetes de Android. * Porque el código que escribo puede compartirse entre el cliente y el servidor. Esto es particularmente relevante para algo como JSON, donde es posible que desee serializar datos a JSON en un extremo para enviarlos al otro extremo. Para casos de uso como ese, si usa Java en ambos extremos, ayuda a evitar la introducción de dependencias de Android. *.
O supongo que uno podría tomar el código fuente de Android. * Relevante y agregarlo a su proyecto de servidor, pero no lo he intentado ...
fuente
Puede descargar una biblioteca desde http://json.org (Json-lib u org.json) y usarla para analizar / generar el JSON
fuente
solo necesitas importar esto
estoy usando dos objetos porque puedes tener un jsonObject dentro de otro
luego puse la publicación json dentro de otra como esta
este es el método que uso para hacer una solicitud
establecer la conexión
establecer el flujo de salida
Lo uso para ver en el logcat lo que estoy enviando
aquí se construye la cuerda
uso este registro para ver qué viene en la respuesta
Instanciar un JSON con la cadena que contiene la respuesta del servidor
fuente
si está buscando un análisis rápido de json en Android, le sugiero una herramienta que está disponible gratuitamente.
Herramienta JSON Class Creator
Es de uso gratuito y crea su clase de análisis de todos los json en uno o dos segundos ...: D
fuente
Aunque los usuarios ya proporcionan respuestas excelentes, como fomentar el uso de GSON, etc., me gustaría sugerir el uso de org.json . Incluye la mayoría de las funcionalidades de GSON. También le permite pasar una cadena json como argumento a su JSONObject y se encargará del resto, por ejemplo:
JSONObject json = new JSONObject("some random json string");
Esta funcionalidad lo convierte en mi favorito personal.
fuente
Existen diferentes bibliotecas de código abierto, que puede usar para analizar json.
org.json: - Si desea leer o escribir json, puede usar esta biblioteca. Primero cree JsonObject: -
Ahora, use este objeto para obtener sus valores: -
Puedes ver el ejemplo completo aquí
Jackson databind: - Si desea vincular y analizar su json a una clase POJO particular, puede usar la biblioteca jackson-databind, esto vinculará su json a la clase POJO: -
Puedes ver el ejemplo completo aquí
fuente