2010-02-13 13 views
140

Por lo que sé, hay tres JSON Parsers para Objective-C, JSON Framework, YAJL y Touch JSON. Entonces, estos tres tendrían sus propias características.

Por ejemplo:
YAJL se puede utilizar como un analizador de estilo SAX.
JSON Framework tiene una historia relativamente larga y es ampliamente utilizado.
Touch JSON analiza NSData en lugar de NSString.
Comparación de JSON Parser para Objective-C (JSON Framework, YAJL, TouchJSON, etc.)

Además, en lo que he probado, el resultado de la comparación de funcionamiento es el siguiente:
[rápido] YAJL> Marco de JSON> Touch JSON [lenta].

Si conoce los pros y los contras de estos analizadores JSON, ¿podría decirme?
Por último, si conoce cualquier otro analizador JSON, dígamelo.

+1

Mi voto! Esta es una gran pregunta. Me encantaría que algunos expertos respondan este. He estado usando JSON Framework todo el tiempo, pero estoy ansioso por conocer los pros y los contras de otros analizadores. –

+0

Gracias Chintan. También estoy usando JSON Framework y no me quejo. Pero, espero que alguien pueda darnos una buena respuesta. – tomute

+5

¿Qué tal un analizador JSON de transmisión por secuencias para Obj-C? Me gustaría tener un analizador que diga que es delegado cuando se haya analizado un nuevo objeto, p.cuando está descargando un JSON grande de un servidor, puede comenzar a procesar la pieza que se ha recibido. También podría reducir la huella de memoria. –

Respuesta

59

Si está buscando velocidad, eche un vistazo a JSONKit. Es (generalmente) mucho más rápido que las bibliotecas JSON ya mencionadas, a menudo un orden de magnitud más rápido. Y debido a su "caché de objetos instanciados recientemente", usará (nuevamente, generalmente) también menos memoria.

+2

Puedo confirmar esto :) En mis pruebas, JSONKit fue casi dos veces más rápido que YAJL y un 50% más rápido que JSON Framework, pero aparentemente los datos que utilicé para la prueba fueron una especie de peor escenario para JSONKit. –

+2

Segundo eso. Recuerde establecer el indicador NS_BLOCK_ASSERTIONS en sus compilaciones de Release. Incluso mejora aún más la velocidad. – DenTheMan

+1

AFAICT JSONKit no es compatible con el análisis basado en secuencias, por lo que si ese es un problema, es posible que desee ir con json-framework o YAJL. –

5

También hay this parser:

No recuerdo cómo me topé con éste, pero parecía ligero y sencillo, así que pensé que se adapte a mis necesidades. El evento lo bifurcó para agregar la inicialización de NSData. Como necesitaba analizar pequeñas respuestas, no me importó el rendimiento. Sin embargo, sería interesante saber cómo funciona.

+0

Este es el analizador JSON más ligero y simple que he usado hasta ahora, muy recomendable. – Kelvin

+0

Guau, hecho mi día. ¡Un analizador tan simple y elegante! – thandasoru

2

Mire this post. < 30 caracteres>

+2

Mejor aún, consulte la versión actualizada aquí http://psionides.jogger.pl/2010/12/12/cocoa-json-parsing-libraries-part-2/ (spoiler: JSONKit gana). –

+2

Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia. –

0

¿Por qué no echar un vistazo a los puntos de referencia de akosma en analizadores sintácticos donde compara diferentes tipos de analizadores? Si falta un analizador, también podría agregarlo a las pruebas, ya que su código es de código abierto.

iPhoneWebServicesClient

12

Considerando a comparison that I did, la biblioteca más rápido es JSONKit, seguido de NSJSONSerialization (ahora API pública) y NextiveJSON. SBJSON y TouchJSON son un poco más lentos que las 3 bibliotecas anteriores.

La comparación se ha realizado utilizando un iPhone 4S con iOS 5.0.1.

+1

¡Voto por mencionar que NSJSONSerialization es parte de la API pública! Me quedaré con esto, porque no habrá ningún problema con el mantenimiento. – Johannes

+0

ídem. [NSJSONSerialization] (http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html), para mí, es la mejor manera de hacerlo, al menos para apuntar a iOS 5.0 y arriba. –

+0

El enlace en la respuesta está roto. Por favor, arreglalo – Ossir

0

Si usted está buscando un serializador de NSObject a JSON y viceversa, es posible que desee a la comprobación OBJC JSONSerializer

3

Creo JSONKit es más rápido que YAJL y YAJL es más rápido que el Tacto JSON y iOS5 clase NSJSONSerialization clase es mucho Más rápido. NSJSONSerialization no necesitan usar ninguna API de terceros.

Cuestiones relacionadas