Ios 如何在swift中从嵌套字典中获取json数据
当我想保存“CourseDates”中的所有数据时,如何访问嵌套字典中的数据?CourseDates=NSArrayMIos 如何在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
您可以创建一个返回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
}
}