在Swift中,我遇到了将JSON
元素转换为NSData
以及将NSData
变量转换回JSON
的问题。
首先,我想提取以下JSON数据的encryptedData
元素:
{
"transactionID" : 12345,
"encryptedData" : [-67,51,-38,61,-72,102,48]
}
转换为NSData encryptedData
变量,但似乎无法做到这一点。我使用SwiftyJSON
解析JSON
,如下所示:
let list: Array<JSON> = json["encryptedData"].arrayValue!
但是这给了我一个ScalarNumber数组,我不知道如何存储到NSData
对象中。
其次,我想从相同的NSData
对象生成JSON
:
let jsonObject = [
"transactionID" : 12345,
"encryptedData" : encryptedData
]
但是NSData encryptedData
对象没有转换为-67,51,-38,61,-72,102,48,它似乎只是使JSON字符串无效。
有什么想法吗?
发布于 2014-11-10 21:44:56
在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)!)
}
发布于 2015-09-15 10:19:57
下面是在swift 2.0中在JSON和NSData之间进行转换的代码(改编自Shuo的答案)
// 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;
}
发布于 2014-11-10 20:40:38
我对SwiftyJSON一无所知。我使用以下代码片段在json和nsdata之间进行转换
// 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)
}
https://stackoverflow.com/questions/26840736
复制相似问题