如何解析this JSON文件?当密钥和值都可用时,我的代码正在工作。
到目前为止我的代码:
let url = URL(string: "http://uhunt.felix-halim.net/api/uname2uid/felix_halim")
let task = URLSession.shared.dataTask(with: url!, completionHandler: {
(data, response, error) in
print("Task Started")
if error != nil {
print("In Error!")
} else {
if let content = data {
do {
let myJSON =
try JSONSerialization.jsonObject(with: content, options: .mutableContainers) as AnyObject
print(myJSON)
} catch {
print("In Catch!")
}
}
}
})
task.resume()
print("Finished")
答案 0 :(得分:3)
这个答案不正确。有可能像在vadian post
那样参与Int等这不是json对象格式规范。 JSON数据必须以" {"对象 或" ["对于元素数组。
所以,如果你有不同的格式我会建议:
检查第一个字母。如果" {"解析为对象。
检查第一个字母。如果" ["解析为数组。
否则:
只需将String转换为Int,就像这样:
var num = Int("339")
如果不使用简单的字符串。
答案 1 :(得分:3)
如果JSON的根对象不是字典或数组,则必须将.allowFragments
作为选项传递(顺便说一句,从不传递.mutableContainers
,这在Swift中没有意义)
let url = URL(string: "http://uhunt.felix-halim.net/api/uname2uid/felix_halim")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
print("Task Started")
guard error == nil else {
print("In Error!", error!)
return
}
do {
if let myJSON = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? Int {
print(myJSON)
}
} catch {
print("In Catch!", error)
}
}
task.resume()
print("Finished")