在Swift中解析JSON时未获得预期结果

在Swift中解析JSON时未获得预期结果,json,swift,Json,Swift,我有一个类似这样的web服务 [ { "id_test" : "1", "title":"test1" }, { "id_test" : "2", "title":"test2" },{ "id_test" : "3", "title":"test3" }, ] 我使用以下代码读取程序中的json: func downloadJsonWithUrl() { let url = URL(string:"weserviceurl") let task = URLSession.s

我有一个类似这样的web服务

[
{
"id_test" : "1",
"title":"test1"
},
{
"id_test" : "2",
"title":"test2"
},{
"id_test" : "3",
"title":"test3"
},
]
我使用以下代码读取程序中的json:

func downloadJsonWithUrl()
{
    let url = URL(string:"weserviceurl")

    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil
        {
            print("Error")
        }
        else
        {
            if let content = data
            {
                do
                {
                    let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
                   print(myJson)
                }
                catch
                {
                }
            }
        }
    }
    task.resume()
}
我的问题是,目前要在序列化下面使用此代码:

if let info = myJson as? NSArray
{
    if let categories = info["title"]
    {
        print(categories)
    }
}
不起作用。它返回为空。为什么?

试试这个

func downloadJsonWithUrl() {
  let url = URL(string:"link")

  let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil {
            print("Error")
        } else {
            if let content = data {
                do {
                    let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as! [AnyObject]
                    var categories: [String] = []

                    for item in myJson {
                        categories.append(item["title"] as! String)
                    }
                    print(categories)
                } catch {
                    print(error)
                }
            }
        }
    }
    task.resume()
}

您应该使用swift
Array
Dictionary
类型。例如,
。。。作为?[[String:Any]]
表示您需要一组字典:

let task = URLSession.shared.dataTask(with: url!) { data, response, error in
    guard let data = data, error == nil else {
        print("\(error)")
        return
    }

    guard let json = try? JSONSerialization.jsonObject(with: data), let array = json as? [[String: Any]] else {
        print("not JSON array of dictionaries")
        return
    }

    for dictionary in array {
        if let idTest = dictionary["id_test"], let title = dictionary["title"] {
            print("\(idTest): \(title)")
        }
    }
}

第二段代码相对于第一段代码在哪里?为什么要在Swift 3中使用
NSArray
?如果
info
是一个数组,那么
info[“title”]
就没有意义了。数组中的索引是一个数值,例如,
info[0]
是第一个字典。或者,如果你想反复浏览所有这些内容,你可以在info{…}中查找字典。老实说,我是新使用swift的人,我在youtube上有以下教程:(,这就是为什么我要问,如果NSArray很旧,那么我需要使用什么?很抱歉,有这么多问题,你会使用Swift数组,例如,而不是像NSArray那样使用
…NSArray
你会像[Any]或
…as][[String:Any]
。如果让info=myJson[0]像[String:Any]{print(info[“ID_Category”])}并返回可选(1)@xx_name trynow@xx_name再来一次:Dit有效!!!是的!!你是一个职业选手,现在最后一个问题是,我如何迭代以获得“标题”的所有结果?也许是这样的。你是认真的吗?