如何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