Joh*_*ith 24 xcode json nsdata swift
我在将一个JSON元素转换为一个元素时遇到了问题NSData,而一个NSData变量又回到JSON了Swift中.
首先,我想提取encryptedData以下JSON数据的元素:
{
"transactionID" : 12345,
"encryptedData" : [-67,51,-38,61,-72,102,48]
}
Run Code Online (Sandbox Code Playgroud)
进入一个NSData encryptedData变量但似乎无法做到这一点.我SwiftyJSON用来解析JSON如下:
let list: Array<JSON> = json["encryptedData"].arrayValue!
Run Code Online (Sandbox Code Playgroud)
但这给了我一个ScalarNumber数组,我不知道如何存储到一个NSData对象中.
其次,我想JSON从同一个NSData对象生成:
let jsonObject = [
"transactionID" : 12345,
"encryptedData" : encryptedData
]
Run Code Online (Sandbox Code Playgroud)
但是NSData encryptedData对象没有转换为[-67,51,-38,61,-72,102,48],它似乎使JSON字符串无效.
有任何想法吗?
Cip*_*rau 23
这是在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;
}
Run Code Online (Sandbox Code Playgroud)
Tis*_*ish 18
在SwiftyJSON中,您可以使用rawData方法获取NSData:
if let encryptedData:NSData = json["encryptedData"].rawData() {
NSLog(NSString(data: encryptedData, encoding: NSUTF8StringEncoding)!)
}
Run Code Online (Sandbox Code Playgroud)
要根据需要生成JSON,您应该将数据转换为数组对象:
if let encryptedDataArray = JSON(data: encryptedData).arrayObject {
let jsonObject:JSON = [
"transactionID" : 12345,
"encryptedData" : encryptedDataArray
]
NSLog(NSString(data: jsonObject.rawData()!, encoding: NSUTF8StringEncoding)!)
}
Run Code Online (Sandbox Code Playgroud)
Shu*_*huo 12
我对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)
}
Run Code Online (Sandbox Code Playgroud)
@Sunil Targe这里是Swift3版本.希望这可以帮助.(改编自Ciprian Rarau的答案)
将数据转换为JSON
func dataToJSON(data: Data) -> Any? {
do {
return try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
} catch let myJSONError {
print(myJSONError)
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
从JSON转换为数据
func jsonToData(json: Any) -> Data? {
do {
return try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted)
} catch let myJSONError {
print(myJSONError)
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
对我有用的 Swift 4:
// Convert from JSON to nsdata
func jsonToNSData(json: AnyObject) -> NSData?{
do {
return try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) as NSData
} catch let myJSONError {
print(myJSONError)
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54571 次 |
| 最近记录: |