Swift 3のiOSアプリケーションで作業していて、サーバーを呼び出してjsonを取得してシリアル化しています。Swift 3でJSONを解析する際のエラー
私はそれを解析しようとすると、私はこのエラーを取得:
"Could not cast value of type '__NSArrayI' (0x1a779acc8) to 'NSDictionary' (0x1a779b128). 2017-03-16 09:53:00.710776 AutoBuddy[3164:706970] Could not cast value of type '__NSArrayI' (0x1a779acc8) to 'NSDictionary' (0x1a779b128)."
私はこの質問のカップルの他のバージョンを見てきましたが、私はまだ混乱しています。 JSONはキー値のペア[String:Any]を持つ辞書として戻ってきます。
私は辞書を取得しているように見えるので、 "as?Dictionary < String、Any>という呼び出し結果を明示的にキャストしようとしましたが、動作しません現在、私のparseJSON関数の最初の行でプログラムがクラッシュしています。私は、以前と同様の解析メソッドを使用していたため、どのようにjsonを戻しているのか、それは常に働いていたか、それは構文解析の問題であれば、誰かが私はコードとそれがシリアライズというJSONの例を掲載します私にこれを解析する適切な方法を説明できる
JSON:。?。
["id": 745, "year": 1995, "styles": <__NSArrayI 0x170e68f00>(
{
id = 7654;
name = "2dr Coupe";
submodel = {
body = Coupe;
modelName = "Mustang Coupe";
niceName = coupe;
};
trim = Base;
},
{
id = 7653;
name = "2dr Convertible";
submodel = {
body = Convertible;
modelName = "Mustang Convertible";
niceName = convertible;
};
trim = Base;
},
{
id = 7648;
name = "GT 2dr Coupe";
submodel = {
body = Coupe;
modelName = "Mustang Coupe";
niceName = coupe;
};
trim = GT;
},
{
id = 7647;
name = "GT 2dr Convertible";
submodel = {
body = Convertible;
modelName = "Mustang Convertible";
niceName = convertible;
};
trim = GT;
},
{
id = 7650;
name = "GTS 2dr Coupe";
submodel = {
body = Coupe;
modelName = "Mustang Coupe";
niceName = coupe;
};
trim = GTS;
}
)
]
スウィフトコード:
func getJSONData(path: String)
{
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let url = URL(string: path + "API key")!
let task = session.dataTask(with: url, completionHandler:
{
(data, response, error) in
if error != nil
{
print(error!.localizedDescription)
}
else
{
do {
if let resultJSON = try JSONSerialization.jsonObject(with: data!) as? [String: Any]
{
print(resultJSON)
self.parseJSON(json: resultJSON)
}
}
catch
{
print("\(error)")
}
}
})
task.resume()
}
func parseJSON(json: [String: Any])
{
let styles = json["styles"] as! [String:Any] // Crashes Here
print(styles)
let names = styles["name"] as! String
print(names)
}
より理にかなっている[スウィフト3で正しく解析JSON](http://stackoverflow.com/questions/39423367/correctly-parsing-json-in-swift-3) – JAL