2010-02-13 11 views
140

Per quanto ne so, esistono tre parser JSON per Objective-C, JSON Framework, YAJL e Touch JSON. Quindi, questi tre avrebbero le loro caratteristiche.

Ad esempio:
YAJL può essere utilizzato come parser di stile SAX.
JSON Framework ha una storia relativamente lunga ed è ampiamente utilizzato.
Touch JSON analizza NSData anziché NSString.
Confronto di Parser JSON per Objective-C (JSON Framework, YAJL, TouchJSON, ecc.)

Inoltre, per quanto ho provato, il risultato del confronto delle prestazioni è la seguente:
[veloce] YAJL> quadro JSON> tocco JSON [lento].

Se si conoscono i pro e i contro di questi parser JSON, potresti dirmelo?
Infine, se si conosce un altro parser JSON, si prega di dirmelo.

+1

Il mio voto! Questa è una grande domanda. Mi piacerebbe che alcuni esperti rispondessero a questo. Ho usato JSON Framework da sempre, ma sono ansioso di conoscere i pro ei contro di altri parser. –

+0

Grazie Chintan. Sto anche usando JSON Framework e non ho lamentele. Ma spero che qualcuno possa darci una buona risposta. – tomute

+5

Che dire di un parser JSON in streaming per Obj-C? Mi piacerebbe avere un parser che gli direbbe delegato quando un nuovo oggetto è stato analizzato, ad es.quando si scarica un JSON di grandi dimensioni da un server, è possibile iniziare l'elaborazione della parte che è stata ricevuta. Potrebbe anche ridurre l'impronta della memoria. –

risposta

59

Se stai cercando la velocità, dai uno sguardo allo JSONKit. È (di solito) molto più veloce delle già citate librerie JSON, spesso di un ordine di grandezza più veloce. E a causa della sua "cache di oggetti recentemente istanziata", sarà (di nuovo, di solito) utilizzare anche meno memoria.

+2

Posso confermarlo :) Nei miei test, JSONKit era quasi due volte più veloce di YAJL e il 50% più veloce di JSON Framework, ma a quanto pare i dati che ho usato per il test erano una specie di scenario peggiore per JSONKit. –

+2

Secondo. Ricorda di impostare il flag NS_BLOCK_ASSERTIONS nelle build Release. Migliora ulteriormente la velocità. – DenTheMan

+1

AFAICT JSONKit non supporta l'analisi basata sul flusso, quindi se questo è un problema potresti voler andare con json-framework o YAJL. –

5

C'è anche this parser:

Non ricordo come mi sono imbattuto in questo, ma sembrava leggero e semplice, così ho pensato che si adatta alle mie esigenze. L'evento è stato bocciato per aggiungere l'inizializzazione da NSData. Dato che avevo bisogno di analizzare piccole risposte, non mi importava delle prestazioni. Sarebbe interessante sapere come si comporta però.

+0

Questo è il parser JSON più leggero e semplice che ho usato fino ad ora, altamente raccomandato. – Kelvin

+0

Wow, ha reso la mia giornata. Un parser così semplice ed elegante! – thandasoru

2

Vedere this post. < 30 caratteri>

+2

Ancora meglio, guarda la versione aggiornata qui http://psionides.jogger.pl/2010/12/12/cocoa-json-parsing-libraries-part-2/ (spoiler: JSONKit vince). –

+2

Sebbene ciò possa teoricamente rispondere alla domanda, [sarebbe preferibile] (http://meta.stackexchange.com/q/8259) includere qui le parti essenziali della risposta e fornire il link per riferimento. –

0

Perché non dare un'occhiata ai benchmark di akosma sugli analizzatori in cui confronta diversi tipi di parser. Se manca un parser, potresti anche aggiungerlo ai test, dal momento che il suo codice è open source.

iPhoneWebServicesClient

12

Considerando a comparison that I did, la libreria più veloce è JSONKit, seguito da NSJSONSerialization (oggi API pubblica) e NextiveJSON. SBJSON e TouchJSON sono un po 'più lenti delle precedenti 3 librerie.

Il confronto è stato eseguito utilizzando un iPhone 4S con iOS 5.0.1.

+1

Up-vote per aver menzionato che NSJSONSerialization fa parte dell'API pubblica! Continuerò con questo, perché non ci saranno problemi con la manutenzione. – Johannes

+0

idem. [NSJSONSerialization] (http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html), per me, è la via sensata da percorrere, almeno per il targeting di iOS 5.0 e su. –

+0

Il link nella risposta è rotto. Per favore aggiustalo – Ossir

0

Se siete alla ricerca di un serializzatore da NSObject a JSON e viceversa, si potrebbe desiderare di checkout OBJC JSONSerializer

3

penso JSONKit è più veloce di YAJL e YAJL è più veloce di tocco JSON e IOS5 classe classe NSJSONSerialization è molto Più veloce. NSJSONSerialization non è necessario utilizzare alcuna API di terze parti.

Problemi correlati