2010-08-25 19 views

risposta

72

A partire da iOS5 JSON è stato supportato in modo nativo, senza necessità di framework di terze parti. Questo è supportato dal NSJSONSerialization Class!

+1

Consiglieresti di utilizzare le classi native o JSONKit - ho sentito ragioni di rendimento per il motivo per cui useresti le classi non native e mi piacerebbe un po 'di feedback – Doug

+0

@Doug in base a questo: http://www.bonto.ch/ blog/2011/12/08/json-libraries-for-ios-comparison-updated/JSONKit è più veloce, ma a meno che tu non stia lavorando con una grande quantità di JSON non penso che farà molta differenza. – ThomasW

+0

NSJSONSerialization ha un bug solo in iOS 5 (non l'ho mai trovato in 6) e a volte genera un errore su JSON perfettamente valido. Errore Error Domain = NSCocoaErrorDomain Code = 3840 "Impossibile completare l'operazione. (Errore di cacao 3840.)" (Chiave duplicata per l'oggetto attorno al carattere 126.) Non so cosa causa l'errore completamente, come posso lo riproducono sempre – LightningStryk

36

risposta Aggiornamento per iOS 5:

JSON supporto è ora nativo di iOS con NSJSONSerialization, ma in termini di prestazioni, impallidisce in confronto a JSONKit, come John Englehart indicato nel JSONKit README:

UPDATE: (2011/12/18) I benchmark di seguito sono state eseguite prima di Mele NSJSONSerialization era disponibile (a partire da Mac OS X 10.7 e iOS 5). La domanda ovvia è: Qual è più veloce, NSJSONSerialization o JSONKit? Secondo questo sito, JSONKit è più veloce di NSJSONSerialization. Alcuni rapidi calcoli "dietro la busta" utilizzando i numeri riportati, JSONKit sembra essere approssimativamente dal 25% al ​​40% più veloce di NSJSONSerialization, che è piuttosto significativo.

enter image description here

Ecco un post sul blog, che approfondisce parametri più specifici: JSON Libraries for iOS Comparison

+10

Per chiunque trovare questa domanda tramite Google o qualche altra fonte simile: Boz di risposta qui sotto sostituisce questo. Il supporto JSON è ora nativo per iOS. – Tommy

+0

Per tutti coloro che sperano di usare JSONKit con la tua app che usa la raccolta dei rifiuti basata sul conteggio dei riferimenti di iOS, sei sfortunato qui (in altre parole la documentazione di JSONKit si fa in quattro per dire che il comportamento di JSONKit quando viene usato con un L'app ARC non è definita). Ma, se stai usando ARC, probabilmente non ti importa troppo della memoria e delle prestazioni comunque :-) – umassthrower

+2

@umassthrower Sono sicuro che sei a conoscenza del flag '-fno-objc-arc' ... –

0

Per quanto riguarda i benchmark JSONKit, per il momento attuale e la versione iOS non è così veloce. Dopo aver creato un'applicazione di test per la velocità di prova NSJSONSerialization è più veloce, ma non così veloce come un'implementazione personalizzata OKJSONParser