¿Cómo convertir un diccionario o una matriz a una cadena json en Swift? Descarga SwiftyJSON aquí, o clona directamente desde GitHub: gitclone/lingoer/SwiftyJSON.git Uso básico Usar SwiftyJSON es muy simple: una NSURLSessionTask típica que raspa la API de Twitter producirá dataFromNetwork:NSData. : Primero, se debe inicializar JSONValue:?1letjson=JSONValue(dataFromNetwork)JSONValue es un tipo de enumeración que representa una estructura de datos JSON típica. Puede usar subíndices para obtener valores diferentes del JSONValue original, como este: letuserName:JSONValue=json[0]["user"]["name"] Tenga en cuenta que userName sigue siendo un JSONValue, entonces, ¿cómo se obtiene el ¿cadena? ? Puede utilizar la propiedad .string para obtener el valor de verdad de una representación de datos JSON. letuserNameString=nombredeusuario.cadena! Para cada tipo de JSON, JSONValue proporciona una propiedad para recuperar: varstring:String?varnumber:NSNumber?varbool:Bool?vararray:Array?varobject:Dictionary?Tenga en cuenta que cada propiedad es un valor opcional. Esto se debe a que los datos JSON pueden contener cualquier tipo válido definido para ellos. La propiedad .number produce un valor NSNumber y generalmente es de poca utilidad en Swift. Puede obtener un valor Doble o un valor Int usando .double o .integer. ifletintValue=numberValue.integer{count+=intValue} hellstar hellstar Traductor: Hellstar Fecha: Hace 4 meses 0 personas fijadas ¡Buena traducción! Enumeraciones En Swift, JSONValue es en realidad una enumeración: enumJSONValue{caseJNumber(NSNumber)caseJString(String)caseJBool(Bool)caseJNullcaseJArray(Array)caseJObject(Dictionary)caseJInvalid(NSError)} Puede usar una cláusula switch para cambiar Obteniendo efectivamente el valor: letjson=JSONValue(jsonObject)switchjson["user_id"]{case .JString(letstringValue):letid=stringValue.toInt()case.JNumber(letnumberValue):letid=numberValue.integerValuedefault:println("¡Ups! ! ! JSONDataisUnexpectedorBroken") subíndice Tenga en cuenta que en JSON, la estructura de la matriz se encapsula en Array, lo que significa que cada elemento de la matriz es un JSONValue. Incluso si la matriz se saca de JSONValue, aún puede obtener el valor del elemento usando propiedades básicas: ifletarray=json["key_of_array"].array{ifletstring=array[0].string{//Thearray[0]istillaJSONValue !}}. Lo mismo ocurre con los objetos. Por lo tanto, la forma recomendada de acceder a cada matriz y objeto es utilizar el subíndice de JSONValue.
ifletstring=json["key_of_array"][0].string{} De hecho, puede acceder a JSONValue usando subíndices sin preocuparse de que un error de tiempo de ejecución provoque un bloqueo: ?1letuserName=json[99999]["wrong_key"] Si usa Forma recomendada de obtener datos, entonces es seguro: ifletuserName=json[99999]["wrong_key"]["name"].string{//Siempre es seguro}.