신속한 3으로의 변환으로 인해 Json을 구문 분석하는 데 사용하는 코드에 몇 가지 오류가 발생했습니다. 비슷한 문제가있는 다른 사람을 찾아 봤지만 사전에 사전이있는 경우는 없었습니다. 사전에서 정보를 가져올 때 "임의"부분을 캐스팅해야한다는 것을 이해하지만 포함 된 사전으로 진행하는 방법을 모르겠습니다. 내 코드는 다음과 같습니다.
func parseJson(_ JsonDict: NSDictionary)
{
var data = [newsarticle]()
var placeholder: NSDictionary
var names = JsonDict["result"]!["ReturnValue"]!!["tree"] as! [NSArray]
let childDict = names[0] as! NSDictionary
names = childDict["children"] as! NSArray
for element in names{
placeholder = element as! NSDictionary
data.append(newsarticle(name: placeholder["text"] as! String,desc: "https://www.oncoursesystems.com/school/webpage/\(placeholder["id"] as! NSNumber)/689493"))
}
addData(data)
}
구문 분석중인 Json Dict :
{
"type":"rpc",
"tid":2,
"action":"Websites",
"method":"school_webpage",
"result":{
"CurrentStatus":1,
"Description":"OK",
"ReturnValue":{
"splash":"",
"bgcolor":"#FFFFFF",
"tree":[
{
"text":"Staff Websites",
"expanded":true,
"children":[
{
"id":462793,
"text":"Ahrens, Linda",
"iconCls":"icn-add",
"leaf":true,
"type":"website",
"showAdd":false
},
{
"id":498858,
"text":"Altemose, David",
"iconCls":"icn-add",
"leaf":true,
"type":"website",
"showAdd":false
},
{
"id":11159347,
"text":"Alvin, Patrick",
"iconCls":"icn-add",
"leaf":true,
"type":"website",
"showAdd":false
},
{
"id":492376,
"text":"Anderson, Kelly",
"iconCls":"icn-add",
"leaf":true,
"type":"website",
"showAdd":false
},
{
"id":11247466,
"text":"Anderson, Michael",
"iconCls":"icn-add",
"leaf":true,
"type":"website",
"showAdd":false
}
]
}
]
}
}
}
Amit의 코드를 기반으로 올바르게 수정 된 버전
func parseJson(_ JsonDict: AnyObject)
{
var data = [newsarticle]()
let dict = JsonDict as? [String: AnyObject]
if let dict2 = dict?["result"]?["ReturnValue"]{
if let dict3 = (dict2 as! [String: AnyObject])["tree"] as? [AnyObject] {
for dict4 in dict3 {
if let dict5 = dict4["children"] as? [AnyObject]{
for dict6 in dict5{
let datum = dict6 as? [String: AnyObject]
data.append(newsarticle(name: (datum?["text"])! as! String,desc: "https://www.oncoursesystems.com/school/webpage/\(datum?["id"] as! NSNumber)/689493"))
}
}
}
addData(data)
}
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다