在Swift中解析JSON时未获得预期结果
我有一个类似这样的web服务在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
[
{
"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有效!!!是的!!你是一个职业选手,现在最后一个问题是,我如何迭代以获得“标题”的所有结果?也许是这样的。你是认真的吗?