【问题标题】:My swift app fail to convert NSData to Json我的 swift 应用程序无法将 NSData 转换为 Json
【发布时间】:2016-09-05 20:02:14
【问题描述】:

我试图通过这样做将 NSData 转换为 Json:

    let jdata = getJSON("https://api.myjson.com/bins/16j2i")

    do {
        let json = try NSJSONSerialization.JSONObjectWithData(jdata, options: []) as! [String: AnyObject]
        print(json)
    } catch {
        print("\(error)")
    }

这是 getJSON 方法

func getJSON(url:String) -> NSData {
    return NSData(contentsOfURL: NSURL(string: url)!)!
}

错误提示无法将“_NSCFArray”类型的值转换为“NSDictionary”。有任何想法吗?请

【问题讨论】:

  • 字典数组:[[String: AnyObject]]

标签: ios json swift nsdata nsjsonserialization


【解决方案1】:
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
let convert_array = responseString?.description
// Convert server json response to NSDictionary
do {
    if let convertedJsonIntoDict = try JSONSerialization.jsonObject(with: data!, options: []) as? NSArray {
       print(convertedJsonIntoDict)
    }

【讨论】:

    【解决方案2】:
    let data = text.data(using: String.Encoding.utf8)
    

    让 json = 试试 JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [字符串:任何]

    适用于 Swift 3.1 和 Swift 4

    【讨论】:

    • 请不要推荐.mutableContainers。该选项在 Swift 中毫无意义。
    【解决方案3】:

    您的 JSON 的根元素是数组而不是字典(您的格式类似于 [{...},{...}] )。要修复此错误,您需要将解析代码更改为:

    let json = try NSJSONSerialization.JSONObjectWithData(jdata, options: []) as! [[String: AnyObject]]
    

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2016-11-16
      • 2016-09-18
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多