提问者:小点点

使用Swift的序列化程序JSON错误-自动释放Un安全指针(有1个子)


我尝试在线解析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")

        }

    }

不要返回数组或字典,在调试中出现在json下面:

返回错误:

Error: VSs26AutoreleasingUnsafePointer (has 1 child)

当我调试jsonObj这个返回nil

请有人帮忙,我按小时搜索信息,测试很多东西,但没有人为我工作,非常感谢。


共1个答案

匿名用户

这比你想象的要容易:

var error: NSError?
let jsonObj: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0),
            error: &error)

此外,还有一个问题,为什么JSON作为字符串而不是数据传入。

jsonObj是一个糟糕的名字,因为一旦它被反序列化,它将是一个数组,而不是JSON。