首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift中将JSON转换为NSData,并将NSData转换为JSON

在Swift中将JSON转换为NSData,并将NSData转换为JSON
EN

Stack Overflow用户
提问于 2014-11-10 17:42:44
回答 6查看 70K关注 0票数 28

在Swift中,我遇到了将JSON元素转换为NSData以及将NSData变量转换回JSON的问题。

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

代码语言:javascript
复制
{
    "transactionID" : 12345,
    "encryptedData" : [-67,51,-38,61,-72,102,48]
}

转换为NSData encryptedData变量,但似乎无法做到这一点。我使用SwiftyJSON解析JSON,如下所示:

代码语言:javascript
复制
let list: Array<JSON> = json["encryptedData"].arrayValue!

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

其次,我想从相同的NSData对象生成JSON

代码语言:javascript
复制
let jsonObject = [
    "transactionID" : 12345,
    "encryptedData" : encryptedData
]

但是NSData encryptedData对象没有转换为-67,51,-38,61,-72,102,48,它似乎只是使JSON字符串无效。

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-11-10 21:44:56

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

代码语言:javascript
复制
if let encryptedData:NSData = json["encryptedData"].rawData() {
    NSLog(NSString(data: encryptedData, encoding: NSUTF8StringEncoding)!)
}

要生成所需的JSON,您应该将数据转换为数组对象:

代码语言:javascript
复制
if let encryptedDataArray = JSON(data: encryptedData).arrayObject {
    let jsonObject:JSON = [
        "transactionID" : 12345,
        "encryptedData" : encryptedDataArray
    ]
    NSLog(NSString(data: jsonObject.rawData()!, encoding: NSUTF8StringEncoding)!)
}
票数 18
EN

Stack Overflow用户

发布于 2015-09-15 10:19:57

下面是在swift 2.0中在JSON和NSData之间进行转换的代码(改编自Shuo的答案)

代码语言:javascript
复制
// 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;
}
票数 26
EN

Stack Overflow用户

发布于 2014-11-10 20:40:38

我对SwiftyJSON一无所知。我使用以下代码片段在json和nsdata之间进行转换

代码语言:javascript
复制
// 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)
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26840736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档