如何parsing数组的JSON数组在Swift中
我试图parsingJSON,就像下面
[ { "People": [ "Jack", "Jones", "Rock", "Taylor", "Rob" ] }, { "People": [ "Rose", "John" ] }, { "People": [ "Ted" ] } ]
导致[[“Jack”,“Jones”,“Rock”,“Taylor”,“Rob”],[“Rose”,“John”],[“Ted”]
这是数组的数组。
我试着用下面的代码
if let path = Bundle.main.path(forResource: "People", ofType: "json") { let peoplesArray = try! JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)), options: JSONSerialization.ReadingOptions()) as? [AnyObject] for people in peoplesArray! { print(people) } }
当我打印“人”,我得到O / P为
{ People = ( Jack, "Jones", "Rock", "Taylor", "Rob" ); } { People = ( "Rose", "John" ); } .....
当“人”重复3次时,我很困惑
试图显示的内容在我的第一个单元格中有“杰克”的“UITableView”“罗布”和第二个单元格有“玫瑰”,“约翰”和第三个单元格作为“特德”
请帮助我了解如何实现这一目标
var peoplesArray:[Any] = [ [ "People": [ "Jack", "Jones", "Rock", "Taylor", "Rob" ] ], [ "People": [ "Rose", "John" ] ], [ "People": [ "Ted" ] ] ] var finalArray:[Any] = [] for peopleDict in peoplesArray { if let dict = peopleDict as? [String: Any], let peopleArray = dict["People"] as? [String] { finalArray.append(peopleArray) } } print(finalArray)
输出:
[["Jack", "Jones", "Rock", "Taylor", "Rob"], ["Rose", "John"], ["Ted"]]
在你的情况下,它将是:
if let path = Bundle.main.path(forResource: "People", ofType: "json") { let peoplesArray = try! JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)), options: JSONSerialization.ReadingOptions()) as? [Any] var finalArray:[Any] = [] for peopleDict in peoplesArray { if let dict = peopleDict as? [String: Any], let peopleArray = dict["People"] as? [String] { finalArray.append(peopleArray) } } print(finalArray) }
你在这里首先是一个3个对象的数组。 每个对象是一个字典,其中键是人,值是一个string数组。 当你试图执行jsonserialization时,你必须把它转换成预期的结果。 所以你有第一个对象的数组,然后你有一个字典与string:任何,那么你获得一个string的数组
let peoplesArray = try! JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)), options: []) as? [AnyObject] guard let peoplesObject = peoplesArray["people"] as? [[String:Any]] else { return } for people in peoplesObject { print("\(people)") }
我不能在评论中贴上它,它太长了或者什么东西
static func photosFromJSONObject(data: Data) -> photosResult { do { let jsonObject : Any = try JSONSerialization.jsonObject(with: data, options: []) print(jsonObject) guard let jsonDictionary = jsonObject as? [NSObject : Any] as NSDictionary?, let trackObject = jsonDictionary["track"] as? [String : Any], let album = trackObject["album"] as? [String : Any], let photosArray = album["image"] as? [[String : Any]] else { return .failure(lastFMError.invalidJSONData) } }
而JSON是这样的:
{ artist: { name: Cher, track: { title: WhateverTitle, album: { title: AlbumWhatever, image: { small: "image.px", medium: "image.2px", large: "image.3px"} ....
假设json是编码数据
var arrayOfData : [String] = [] dispatch_async(dispatch_get_main_queue(),{ for data in json as! [Dictionary<String,AnyObject>] { let data1 = data["People"] arrayOfData.append(data1!) } })
您现在可以使用arrayOfData。 :d