我有一个快速的应用程序Swift 3
与服务器交互获取数据。现在,我仍然可以成功连接到服务器。问题是,当我想要从JSON
结果中获取特定数据来设置标签文本值时,我总是在控制台中获得值Optional(x)
,标签值始终为nil
。从JSONSerialization结果设置标签
这是我从服务器接收我的数据格式:
[A: 1,
B: 2,
C: 3]
这是我怎么得到它:
let task = session.dataTask(with: request) { data, response, error in
do {
guard let data = data else {
throw JSONError.NoData
}
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary else {
throw JSONError.ConversionFailed
}
self.labelA.text = json[“A”] as? String
} catch let error as JSONError {
print(error.rawValue)
} catch let error as NSError {
print(error.debugDescription)
}
}
task.resume()
编辑: 我也可以得到这些格式:
案例1:
[
{
id: 1,
fieldA: “nameA”,
fieldB: [“textA”, “textB", “textC”, “textD”],
fieldC: “nameC”
}
]
案例2:
{
id: 1,
fieldA: “nameA”,
fieldB: [“textA”, “textB", “textC”, “textD”],
fieldC: “nameC”
}
的fieldB是字符串
数组
非常感谢你的工作!你能否请编辑你的答案,并在[{A:1, B:[“text1”,“text2”], C:3}]的情况下做一个简单的例子,对于案例{A:1, B:2, C:3}?再次感谢! –
你预计在'B:[“text1”,“text2”]'的情况下会发生什么?你的例子不一致。请以有效的JSON字符串提供所有示例。目前它们也是使用打印命令的字典的控制台输出。这使得区分字符串和数字类型非常困难。编辑你的问题,然后我将编辑答案。 – vadian
请参阅我的编辑 –