ios - 使用 Swift 的序列化器 JSON 出错 - AutoreleasingUnsafePointer(有 1 个 child )

标签 ios objective-c json ios7 swift

我尝试在线解析一个 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/

相关文章:

ios - 为 App Preview 捕获 iOS 模拟器视频

json - 如何在 Postgres 中调用带有 json 参数的函数

javascript - 来自字符串的 JSON 数组

IOS 6 方向 - 只有一个 View Controller 支持横向和纵向方向 - 否则仅纵向

ios - UITableView ContentInsets 水平滚动内容

ios - 检测单元格编辑中的单元格点击,显示重新排序控制 + 披露控制作为 Safari 书签编辑

objective-c - 即使在数据库中创建了项目,NSFetchedResultsController也不会获取结果

ios - PFLogInViewController 不再被识别?

java - 抽象类及其子类型的 StdDeserializer

java - 如何从 Java 中的 Apple 公钥 JSON 响应中获取公钥?