Ios 如何在swift中从嵌套字典中获取json数据

Ios 如何在swift中从嵌套字典中获取json数据,ios,json,swift,Ios,Json,Swift,当我想保存“CourseDates”中的所有数据时,如何访问嵌套字典中的数据?CourseDates=NSArrayM 您可以创建一个返回NSDictionary的函数,如下所示: func parseJSON(data: NSData) -> NSDictionary{ var dic: NSDictionary! do { boardsDictionary = try NSJSONSerialization.JSONObject

当我想保存“CourseDates”中的所有数据时,如何访问嵌套字典中的数据?CourseDates=NSArrayM


您可以创建一个返回NSDictionary的函数,如下所示:

func parseJSON(data: NSData) -> NSDictionary{
        var dic: NSDictionary!
        do {
            boardsDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary

        } catch let error as NSError {
            print(error.localizedDescription)
            print("Error could not parse JSON data, it's null maybe?!!")
        }
        //'\(jsonStr)'

        return dic
    }
更新:

添加以下内容:

public class func jsonToNSData(json: AnyObject) -> NSData?{
    return NSJSONSerialization.dataWithJSONObject(json, options: .allZeros, error: nil)
}

let dic = parseJSON(jsonToNSData(YourJsonData)) as! NSDictionary
您好,您可以尝试一下,它是一个很好的源代码,通过它您可以以比您想象的更简单的方式处理复杂的JSON
{
“元数据”:{
“响应信息”:{
“地位”:200,
“developerMessage”:“OK”,
}
},
“结果”:[
{
“标题”:“合法移民应在无证件移民之前获得自由——道德、公正和公平”,
“机构”:“我请求奥巴马总统政府对合法移民的困境采取人道主义的观点。具体而言,是就业为基础(EB)类别的合法移民。我相信,这些移民在最近通过行政行动(EA)宣布的改革中没有得到足够的改变,这是一个值得欢迎的公告。”,
“问题”:[
{
“id”:“28”,
“名称”:“人权”
},
{
“id”:“29”,
“姓名”:“移民”
}
],
“签名保留”:100000,
“签名帐户”:267,
“需要签名”:99733,
},
{
“标题”:“国家警察枪击案数据库”,
“机构”:“关于每年有多少人被警察枪杀,没有可靠的国家数据。在签署这份请愿书时,我敦促总统通过建立一个由联邦政府控制、可公开访问的涉及警察枪杀事件的数据库,来结束这种缺乏可见性的局面。”,
“问题”:[
{
“id”:“28”,
“名称”:“人权”
}
],
“签名保留”:100000,
“签名帐户”:17453,
“需要签名”:82547,
}
]
}

如果您想从这个JSON中提取结果,可以像这样轻松地执行

func parseJSON(json: JSON) {
for result in json["results"].arrayValue {
    let title = result["title"].stringValue
    let body = result["body"].stringValue
    let sigs = result["signatureCount"].stringValue
    let obj = ["title": title, "body": body, "sigs": sigs]
    objects.append(obj)
}

}下面是一个简单的例子,我们如何从NSDictionary中提取数据。这很简单,我不遵循任何标准

我考虑了字符串格式的json数据。

var data = "{\"data\":{\"fName\":\"naveen\",\"lName\":\"kumar\"},\"friend\":[{\"name\":\"manju\",\"male\":true},{\"name\":\"tanuja\",\"male\":false}]}"
之后你就可以做了

var nsdata = data.dataUsingEncoding(NSUTF16StringEncoding)
if let json = try? NSJSONSerialization.JSONObjectWithData(nsdata!, options: .MutableContainers) as! NSDictionary {         
    if let some = json["friend"]![0]["name"]! {
        print(some) // prints -- manju
    }
}

通过使用subcipt,我们可以获得数据。

检查此链接它不起作用-我收到此错误>无法将类型为“\uu NSArrayM”(0x10eb32b60)的值强制转换为“NSDictionary”(0x10eb32fe8)。也许您应该将json数据转换为NSData此链接看起来很好:
var nsdata = data.dataUsingEncoding(NSUTF16StringEncoding)
if let json = try? NSJSONSerialization.JSONObjectWithData(nsdata!, options: .MutableContainers) as! NSDictionary {         
    if let some = json["friend"]![0]["name"]! {
        print(some) // prints -- manju
    }
}