2017-07-07 21 views
0

とうまくプレーしていない私は、次のコードを持っている:「聞かせparsedData」の行に次のエラーを返してSwift3は私のJSONファイル

let urlString = "https://str8red.com/jsonoverallleaderboard/" 

let url = URL(string: urlString) 
URLSession.shared.dataTask(with:url!) { (data, response, error) in 
    if error != nil { 
     print("there was an error") 
     print(error) 
    } 
    do { 
     let parsedData = try JSONSerialization.jsonObject(with: data!) as! [String:Any] 
    } catch let error as NSError { 
     print(error) 
    } 
}   
}.resume() 

:使用

Could not cast value of type '__NSArrayI' 

JSON iIamさをウェブサイトhttps://str8red.com/jsonoverallleaderboard/から、次の形式である:それは終わりを助けている場合

[["shanu", "1056"], ["snookro", "828"], ["tingeypa", "709"], ["shaun", "620"], ["chrakers", "506"]] 

JSONを使用して、次のようにマッピングすることです:

players = jsonPlayers.map { Player(name: $0[0], score: $0[1]) } 

助けをお待ちしています。

+1

。文字列の配列の配列。 '[[String]]'。あなたがすべての文字列であるかどうかわからない場合は '[[Any]]' – Moritz

+0

ありがとう、エリック、私はそれを遵守するために私の迅速なコード内で修正することはできますか? –

+0

JSONに変換して直接使用する必要はありませんか? –

答えて

1

JSONデータのタイプが[String:Any]ではありません。むしろそれは[[String]]です。

だから、仕事をする次

let parsedData = try JSONSerialization.jsonObject(with: data!) as! [[String]] 

しかし、ここでは、JSONデータを解析行うための便利な方法です。

enum JSONError: String, Error { 
    case NoData = "ERROR: no data" 
    case ConversionFailed = "ERROR: conversion from JSON failed" 
} 

typealias myJSONObjectType = [[String]] // change this according to your data type that is in your JSON 

func parseJSON(fromPath jsonURLString:String) { 
    guard let jsonURL = URL(string: jsonURLString) else { 
     print("Error creating an URL from \(jsonURLString)") 
     return 
    } 
    URLSession.shared.dataTask(with: jsonURL) { (data, response, error) in 
     do { 
      guard let data = data else { 
       throw JSONError.NoData 
      } 
      guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? myJSONObjectType else { 
       throw JSONError.ConversionFailed 
      } 
      print(json) 
     } catch let error as JSONError { 
      print(error.rawValue) 
     } catch let error as NSError { 
      print(error.debugDescription) 
     } 
     }.resume() 
} 

など、それを使用します。それは、配列、辞書に載っていないのです

object.parseJSON(fromPath: "https://str8red.com/jsonoverallleaderboard/") 
+0

それは働いている弦部分でした。他の部分を試してみませんでしたが、助けに感謝:) –

関連する問題