how - Convertir JSON a NSData, y NSData a JSON en Swift




swift consuming rest api (4)

@Sunil Targe aquí está la versión Swift3. Espero que esto ayude. (Adaptado de la respuesta de Ciprian Rarau)

Convertir datos a JSON

func dataToJSON(data: Data) -> Any? {
   do {
       return try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
   } catch let myJSONError {
       print(myJSONError)
   }
   return nil
}

Convertir de JSON a datos

func jsonToData(json: Any) -> Data? {
    do {
        return try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted)
    } catch let myJSONError {
        print(myJSONError)
    }
    return nil;
}

Estoy teniendo problemas para convertir un elemento JSON en NSData , y una variable NSData nuevo en JSON en Swift.

En primer lugar, me gustaría extraer el elemento encryptedData de los siguientes datos JSON:

{
    "transactionID" : 12345,
    "encryptedData" : [-67,51,-38,61,-72,102,48]
}

en una variable NSData encryptedData pero parece que no puede hacerlo. Estoy usando SwiftyJSON para analizar el JSON siguiente manera:

let list: Array<JSON> = json["encryptedData"].arrayValue!

Pero esto me da una serie de ScalarNumber que no sé cómo almacenar en un objeto NSData .

En segundo lugar, me gustaría generar JSON desde el mismo objeto NSData :

let jsonObject = [
    "transactionID" : 12345,
    "encryptedData" : encryptedData
]

Pero el objeto NSData encryptedData no se convierte a [-67,51, -38,61, -72,102,48], simplemente parece anular la cadena JSON.

¿Algunas ideas?


Aquí está el código para convertir entre JSON y NSData en swift 2.0 (adaptado de la respuesta de Shuo)

// Convert from NSData to json object
func nsdataToJSON(data: NSData) -> AnyObject? {
    do {
        return try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers)
    } catch let myJSONError {
        print(myJSONError)
    }
    return nil
}

// Convert from JSON to nsdata
func jsonToNSData(json: AnyObject) -> NSData?{
    do {
        return try NSJSONSerialization.dataWithJSONObject(json, options: NSJSONWritingOptions.PrettyPrinted)
    } catch let myJSONError {
        print(myJSONError)
    }
    return nil;
}

No tengo ni idea de SwiftyJSON. Uso el siguiente fragmento de código para convertir entre json y nsdata

// Convert from NSData to json object
public class func nsdataToJSON(data: NSData) -> AnyObject? {
    return NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: nil)
}

// Convert from JSON to nsdata
public class func jsonToNSData(json: AnyObject) -> NSData?{
    return NSJSONSerialization.dataWithJSONObject(json, options: .allZeros, error: nil)
}

Swift 4 que funciona para mí:

// Convert from JSON to nsdata
func jsonToNSData(json: AnyObject) -> NSData?{
    do {
        return try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) as NSData
    } catch let myJSONError {
        print(myJSONError)
    }
    return nil;
}




nsdata