我在解析 JSON 时遇到了一些困难 - 我已经按照教程从 SQL 数据库接收数据。当我尝试返回并将 Array
移交给 Swift 时没问题,但我无法调用 Array
的任何成员。
swift :
let myUrl = NSURL(string: "XXXXXXXXXXXXXXXX.Fr");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
// Compose a query string
let postString = "Pseudo=\(PseudoVar)";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
// You can print out response object
println("response = \(response)")
// Print out response body
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString)")
//Let's convert response sent from a server side script to a NSDictionary object:
var err: NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary
if let parseJSON = json {
// Now we can access value of First Name by its key
var firstNameValue = parseJSON["firstName"] as? String
println("firstNameValue: \(firstNameValue)")
}
}
task.resume()
PHP(简体):
<?php
array("Pseudo0" => "Hello", "Pseudo1" => "Good Morning");
echo json_encode($returnValue);
?>
任何建议都会有所帮助。
最佳答案
问题是您的响应不是 Dictionary
- 它是一个 Array
。但它也可以是一个字典,具体取决于服务器响应。所以你必须检查响应是字典还是数组。您的代码应该处理这个问题,例如:
if let jsonArray = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? [NSDictionary] {
for jsonDict in jsonArray {
var firstNameValue = jsonDict["firstName"] as? String
println("firstNameValue: \(firstNameValue)")
}
} else if let jsonDict = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary {
var firstNameValue = jstonDict["firstName"] as? String
println("firstNameValue: \(firstNameValue)")
}
关于json - 使用 Swift 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29671723/