小编典典

在Swift中将JSON转换为NSData和将NSData转换为JSON

swift

我在Swift 中将JSON元素转换为NSData,然后将NSData变量转换回时遇到了问题JSON

首先,我想提取encryptedData以下JSON数据的元素:

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

放入NSData encryptedData变量,但似乎无法做到这一点。我SwiftyJSON用来解析JSON如下:

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

但这给了我一个ScalarNumber数组,我不知道如何存储到一个NSData对象中。

其次,我想JSON从同一个NSData对象生成回来:

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

但是NSData encryptedData对象不会转换为[-67,51,-38,61,-72,102,48],它只是使JSON字符串无效。

有任何想法吗?


阅读 460

收藏
2020-07-07

共1个答案

小编典典

在SwiftyJSON中,您可以使用rawData方法获取NSData:

if let encryptedData:NSData = json["encryptedData"].rawData() {
    NSLog(NSString(data: encryptedData, encoding: NSUTF8StringEncoding)!)
}

要根据需要生成JSON,应将数据转换为数组对象:

if let encryptedDataArray = JSON(data: encryptedData).arrayObject {
    let jsonObject:JSON = [
        "transactionID" : 12345,
        "encryptedData" : encryptedDataArray
    ]
    NSLog(NSString(data: jsonObject.rawData()!, encoding: NSUTF8StringEncoding)!)
}
2020-07-07