我尝试在线解析一个 JSON,但无法读取一般类型,如何:
typealias JSON = AnyObject
typealias JSONDictionary = Dictionary<String, JSON>
typealias JSONArray = Array<JSON>
永远不要返回这种类型,我读取的 JSON 是:
json:
[
{
"id":72,
"name":"Batata Cremosa",
"time":"1:30 horas",
"rcp_img_file_name":"batata-cremosa.jpg"
},
{
"id":183,
"name":"Caldeirada de Peixes",
"time":"50 minutos",
"rcp_img_file_name":"caldeirada-peixes.jpg"
},
{
"id":76,
"name":"Batata com Cebola e Ervas",
"time":"10 minutos",
"rcp_img_file_name":"batata-cebola-ervas.jpg"
},
{
"id":56,
"name":"Arroz de forma",
"time":"25 minutos",
"rcp_img_file_name":"arroz-forma.jpg"
}]
读取 json 并将其转换为字符串,在控制台中是这样的:
在控制台中(var jsonString):
(
{
id = 72;
name = "Batata Cremosa";
"rcp_img_file_name" = "batata-cremosa.jpg";
time = "1:30 horas";
},
{
id = 183;
name = "Caldeirada de Peixes";
"rcp_img_file_name" = "caldeirada-peixes.jpg";
time = "50 minutos";
},
{
id = 76;
name = "Batata com Cebola e Ervas";
"rcp_img_file_name" = "batata-cebola-ervas.jpg";
time = "10 minutos";
},
{
id = 463;
name = "Pat\U00ea de Frango F\U00e1cil";
"rcp_img_file_name" = "pate-frango-facil.jpg";
time = "30 minutos";
},
...
所以,这是不读取 JSON 的函数,通过调试时必须选择对象不输入任何选项:
解析函数:
func JSONParseArray(jsonString: String) {
println(jsonString)
var data: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
var error: AutoreleasingUnsafePointer<NSError?> = nil
let jsonObj: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0),
error: error)
println("Error: \(error)")
if jsonObj is JSONDictionary {
println("0")
}
else if jsonObj is JSONArray {
println("1")
}
}
不返回 Array 或 Dictionary,在调试中出现在 json 下方:
返回错误:
Error: VSs26AutoreleasingUnsafePointer (has 1 child)
当我调试 jsonObj
时返回 nil
请有人帮忙,我按信息按小时搜索,测试了很多东西,但没有人适合我,非常感谢。
最佳答案
这比你想象的要容易:
var error: NSError?
let jsonObj: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0),
error: &error)
另外还有一个问题,即为什么 JSON 作为字符串而不是数据传入。
jsonObj
是一个糟糕的名字,因为一旦它被反序列化,它将成为一个数组,而不是 JSON。
关于ios - 使用 Swift 的序列化器 JSON 出错 - AutoreleasingUnsafePointer(有 1 个 child ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476401/