私はこれは私が持っている現在のコードは、しかし、私はそれを実行するだけでプリント(JSONである私は、プロジェクト内でローカルに持っていることにJSONファイルから通貨とそのシンボルのリストを印刷するローカルJSONからJSONデータを解析する方法ファイルswift 3?
guard let path: String = Bundle.main.path(forResource: "Common-Currency", ofType: "json") else {return}
let url = URL(fileURLWithPath: path)
do {
let jsonData = try Data(contentsOf: url)
let json = try JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)
print(json)
guard let jsonArray = json as? [Any] else { return }
for currency in jsonArray {
guard let eachCurrency = currency as? [String: Any] else {return}
guard let currencyName = eachCurrency["code"] else {return}
guard let currencySymbol = eachCurrency["symbol_native"] else {return}
print(currencyName)
print(currencySymbol)
}
}
catch {
print(error)
}
をしようとしています)コマンドが実行され、他の2枚の印刷は実行されません。私は間違って何をしていますか?ルートオブジェクトが辞書[String:Any]
ある
{
"Currencies" : {
"USD": {
"symbol": "$",
"name": "US Dollar",
"symbol_native": "US$",
"decimal_digits": 2,
"rounding": 0,
"code": "USD",
"name_plural": "US dollars"
},
"CAD": {
"symbol": "CA$",
"name": "Canadian Dollar",
"symbol_native": "CA$",
"decimal_digits": 2,
"rounding": 0,
"code": "CAD",
"name_plural": "Canadian dollars"
},
"EUR": {
"symbol": "€",
"name": "Euro",
"symbol_native": "€",
"decimal_digits": 2,
"rounding": 0,
"code": "EUR",
"name_plural": "euros"
},
"AED": {
"symbol": "AED",
"name": "United Arab Emirates Dirham",
"symbol_native": "د.إ.",
"decimal_digits": 2,
"rounding": 0,
"code": "AED",
"name_plural": "UAE dirhams"
},
"AFN": {
"symbol": "Af",
"name": "Afghan Afghani",
"symbol_native": "؋",
"decimal_digits": 0,
"rounding": 0,
"code": "AFN",
"name_plural": "Afghan Afghanis"
},
JSON文字列の先頭を投稿してください。 'json'はおそらく辞書です。ファイルがバンドルに含まれている場合は、すべての 'guard'式とオプションのバインディングは必要ありません。すべての辞書値を強制的にアンラップします。コードがクラッシュすると、設計上のエラーになります。 – vadian
'json'は本当に配列ですか?それを表示できますか? – Larme
これで今すぐ追加しました –