json - 使用 Swift 解析 JSON

标签 json swift

我在解析 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/

相关文章:

json - JSON 中的重复唯一属性 'sameAs'

ios - 没有互联网连接的位置

iOS Swift 在制作带有嵌入列表和 Collection View 的详细信息页面时遇到问题

ios - 使用 Alamofire 4.0 (Swift 3) 下载文件

swift - 来自字符串插值的警告

ruby - 带有 JRuby 的 JSON - 不以 UTF-8 解析结果

javascript - 基于 json 对象显示数据不起作用

java - 如何通过hashmap向Google map API添加多个标记? - (安卓)

ruby - 将 Json 对象保存到 Couchdb

date - 这一年发生了什么事?