I'm having problems converting a JSON
element into NSData
, and an NSData
variable back into JSON
in Swift.
Firstly, I'd like to extract the encryptedData
element of the following JSON data:
{ "transactionID" : 12345, "encryptedData" : [-67,51,-38,61,-72,102,48] }
into an NSData encryptedData
variable but can't seem to be able to do it. I'm using SwiftyJSON
to parse the JSON
as follows:
let list: Array<JSON> = json["encryptedData"].arrayValue!
But this gives me an array of ScalarNumber which I don't know how to store into an NSData
object.
Secondly, I'd like to generate JSON
back from the same NSData
object:
let jsonObject = [ "transactionID" : 12345, "encryptedData" : encryptedData ]
But the NSData encryptedData
object doesn't get converted into [-67,51,-38,61,-72,102,48], it just seems to nullify the JSON string.
Any ideas?
Use the JavaScript function JSON. stringify() to convert it into a string. const myJSON = JSON. stringify(obj);
The method JSON. stringify(student) takes the object and converts it into a string. The resulting json string is called a JSON-encoded or serialized or stringified or marshalled object.
Here is code to convert between JSON and NSData in swift 2.0 (adapted from Shuo's answer)
// 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; }
In SwiftyJSON you can use rawData method to get NSData:
if let encryptedData:NSData = json["encryptedData"].rawData() { NSLog(NSString(data: encryptedData, encoding: NSUTF8StringEncoding)!) }
To generate JSON as you want you should convert data to array object:
if let encryptedDataArray = JSON(data: encryptedData).arrayObject { let jsonObject:JSON = [ "transactionID" : 12345, "encryptedData" : encryptedDataArray ] NSLog(NSString(data: jsonObject.rawData()!, encoding: NSUTF8StringEncoding)!) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With