jsonObject(with:data)成功读取有效的json,但不返回有效的json

时间:2017-11-02 20:06:11

标签: ios json swift validation

我正在处理以下代码的一些问题:

    let session = URLSession.shared
    session.dataTask(with: request) { data, response, error in
        if let data = data {
            let string1 = String(data: data, encoding: String.Encoding.utf8) ?? "Data could not be printed"
            print(string1)

            do {
                if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] {
                    print("success")
                    print(jsonData as AnyObject)
                }
            } catch {
                print(error.localizedDescription)
            }
        }
    }.resume()

当我打印出string1时,它是有效的json并且行print("success")被执行。但是,当它达到print(jsonData as AnyObject)时,输出类似于json,但有=代替:()代替[]。除此之外,一些键甚至不是字符串。它看起来如下:

  ( 
    { "build_path" = "<null>";
        city = "<null>";
        cm = "<null>";
        country = "<null>"; 
    }, {
        //similar to above
    }
 )

(这些值实际上是当前为空)

我不确定为什么会这样,所以任何帮助都会受到赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

删除as AnyObject中的print(jsonData as AnyObject)。它将以您期望的格式打印。

答案 1 :(得分:0)

我查看了一些旧代码,因此请尝试使用JSONSerialization部分的以下行:

if let jsonData = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:Any]

我只是得到了正确的结果:

print(jsonData)

希望这有帮助。