2012-01-13 7 views
42

¿Es posible si tengo un NSString y quiero usar NSJSONSerialization? ¿Cómo hago esto?NSJSONSerialización de NSString

+1

En caso de que el rendimiento sea su prioridad, JSONKit es una mejor alternativa. – Danra

+1

Hay un buen tutorial en http://www.raywenderlich.com/5492/working-with-json-in-ios-5 sobre el uso de NSJSONSerialization. – dean

Respuesta

88

primer lugar se necesita para convertir su NSString a NSData haciendo lo siguiente

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 

continuación, sólo tiene que utilizar el método JSONObjectWithData para convertirlo a JSON

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
+3

para mayor comodidad, puede poner este código en NSJSONSerialization Category. – jianpx

+0

Use 'NSJSONSerialization JSONObjectWithData' con cuidado, ya que, aunque tiene un parámetro NSError *, ¡podría lanzar una excepción cuando ocurra un error! Es recomendable incluirlo en un bloque '@try {} @catch (...)'. – LaborEtArs

1

Puede convertir su cadena a NSData diciendo:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; 

A continuación, puede utilizarlo con NSJSONSerialization. Sin embargo, tenga en cuenta que NSJSONSerialization es solo iOS5, por lo que es mejor utilizar una biblioteca como TouchJSON o JSONKit, que le permiten trabajar directamente con cadenas de todos modos, ahorrándole el paso de convertir a NSData.

12

Necesita convertir su NSString en NSData, en ese punto puede usar el método +[NSJSONSerialization JSONObjectWithData:options:error:].

NSString * jsonString = YOUR_STRING; 
NSData * data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError * error = nil; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
if (!json) { 
    // handle error 
} 
0

escribí un blog publicación que muestra cómo ajustar la clase nativa JSON de iOS en un protocolo general junto con una implementación que usa el lenguaje nativo clase iOS JSON.

Este enfoque hace que sea mucho más fácil usar la funcionalidad nativa y reduce la cantidad de código que tiene que escribir. Además, hace que sea mucho más fácil cambiar la implementación nativa con, por ejemplo, JSONKit, si el nativo probaría ser insuficiente.

http://danielsaidi.com/blog/2012/07/04/json-in-ios

publicar el blog contiene todo el código que necesita. Solo copie/pegue :)

Espero que ayude!

+0

¡Gracias! ¡Arreglado! –

+0

Tenga en cuenta que la publicación tiene 5 años :) –