Idioma de consulta para JSON

11

Tengo un servidor que devuelve un mensaje JSON muy grande y mi aplicación cliente solo depende de una parte de esta respuesta. La aplicación cliente debe verificar si existe la propiedad "xyz" en el mensaje JSON y, según el resultado, ejecutar un caso de uso específico.

Para este requisito, convertir todo el mensaje JSON en objeto me parece un poco caro y, por lo tanto, esta pregunta.

¿Existe un lenguaje de consulta JSON estándar como el que tenemos para XML? En caso afirmativo, cuál es la mejor implementación de este lenguaje de consulta en Java.

FYI: Cambiar o agregar un nuevo servicio en el lado del servidor no es una opción.

Granja
fuente
En javascript, si la respuesta se envía con el encabezado correcto (aplicación / json), la respuesta JSON será un objeto javascript. ¿Es eso lo que estás pidiendo? No estoy seguro de tu pregunta.
Florian Margaine
@Florian Estoy de acuerdo, déjame actualizar mi pregunta y hacerla específica para Java.
Granja
Entonces, supongo que has probado json.org/java ? :-)
Florian Margaine
Me he estado preguntando lo mismo. Cada biblioteca de Java para JSON que he visto parece ser terriblemente voluminosa; ¿no hay nada en la línea de JSON.getString(json_string, 'foo.22.bar')(para, propiedad "bar" en el elemento 22 de la lista en la propiedad "foo", que contiene una Cadena)
Izkata
O, para evitar analizar cada vez JSON baz = new JSON(json_string); baz.getString('foo.22.bar');, por ejemplo
Izkata

Respuestas:

6

¿Por qué no solo usar JavaScript? (JSON es la notación de objetos Javascript después de todo). Entonces no tendrá que analizar ni manipular el JSON.

EDITAR Echa un vistazo a http://json.org/java

Para este requisito, convertir todo el mensaje JSON en objeto me parece un poco caro y, por lo tanto, esta pregunta.

No lo es La deserialización de un objeto es barata (pruébelo usted mismo). Hablar con la API externa será un orden de magnitud más costoso. Podría manipular directamente la cadena, que podría ser un poco más rápida, pero correría el riesgo de errores, reduciría la extensibilidad y la legibilidad. Un alto costo.

Tom Squires
fuente
Actualicé mi pregunta y la hice específica de Java.
Granja
El uso de javascript no es una opción, ya que la aplicación del cliente se ejecuta en Headunit, que solo es compatible con LWUIT
Farm
2

"Medir, no adivinar". Sí, la serialización y deserialización de objetos puede ser costosa en teoría, pero ¿cuáles son los objetivos de rendimiento de su aplicación? Si el objeto (des) serialización no lleva su rendimiento a niveles inaceptables, entonces no se preocupe por eso :-). La clave, por supuesto, es saber cuáles deberían ser los límites de rendimiento (por ejemplo, el tiempo de respuesta al usuario en 2 segundos) y medir cada parte del ciclo de solicitud / respuesta.

Martijn Verburg
fuente