在Swift中将JSON转换为NSData以及将NSData转换为JSON
在Swift中将JSON
元素转换为NSData
并将NSData
变量转换回JSON
时遇到问题.
I'm having problems converting a JSON
element into NSData
, and an NSData
variable back into JSON
in Swift.
首先,我想提取以下JSON数据的encryptedData
元素:
Firstly, I'd like to extract the encryptedData
element of the following JSON data:
{
"transactionID" : 12345,
"encryptedData" : [-67,51,-38,61,-72,102,48]
}
放入NSData encryptedData
变量,但似乎无法执行.我正在使用SwiftyJSON
来解析JSON
,如下所示:
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!
但是这给了我一个ScalarNumber数组,我不知道如何将其存储到NSData
对象中.
But this gives me an array of ScalarNumber which I don't know how to store into an NSData
object.
其次,我想从同一个NSData
对象生成JSON
:
Secondly, I'd like to generate JSON
back from the same NSData
object:
let jsonObject = [
"transactionID" : 12345,
"encryptedData" : encryptedData
]
但是NSData encryptedData
对象没有被转换为[-67,51,-38,61,-72,102,48],它只是使JSON字符串无效.
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.
有什么想法吗?
在SwiftyJSON中,您可以使用rawData方法获取NSData:
In SwiftyJSON you can use rawData method to get NSData:
if let encryptedData:NSData = json["encryptedData"].rawData() {
NSLog(NSString(data: encryptedData, encoding: NSUTF8StringEncoding)!)
}
要根据需要生成JSON,您应该将数据转换为数组对象:
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)!)
}