在Swift中将JSON转换为NSData以及将NSData转换为JSON [英] Converting JSON to NSData, and NSData to JSON in Swift

查看:201
本文介绍了在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)!)
}

这篇关于在Swift中将JSON转换为NSData以及将NSData转换为JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆