私はのようなツールを使用すると便利だと思います。
あなたはJSONを見ればあなたは、エリックアヤが言ったように、データが配列でない辞書であることに気づくことができるで:
{
"currentPage": 1,
"numberOfPages": 1,
"totalResults": 1,
"data": [{
"id": "1P45iR",
"name": "Budweiser",
"nameDisplay": "Budweiser",
"description": "Known as \u201cThe King of Beers\u201d, Budweiser was first introduced by Adolphus Busch in 1876 and is brewed with the same high quality standards today. Budweiser is a medium-bodied, flavorful, crisp American-style lager, craft brewed with a blend of premium hop varieties, and associated with the core American values of celebration and optimism.",
"abv": "5",
"glasswareId": 5,
"srmId": 5,
"availableId": 1,
"styleId": 93,
"isOrganic": "N",
"labels": {
"icon": "https:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/1P45iR\/upload_Y13vwL-icon.png",
"medium": "https:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/1P45iR\/upload_Y13vwL-medium.png",
"large": "https:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/1P45iR\/upload_Y13vwL-large.png"
},
"status": "verified",
"statusDisplay": "Verified",
"servingTemperature": "cold",
"servingTemperatureDisplay": "Cold - (4-7C\/39-45F)",
"createDate": "2012-01-03 02:42:55",
"updateDate": "2016-03-21 19:54:11",
"glass": {
"id": 5,
"name": "Pint",
"createDate": "2012-01-03 02:41:33"
},
"srm": {
"id": 5,
"name": "5",
"hex": "FBB123"
},
"available": {
"id": 1,
"name": "Year Round",
"description": "Available year round as a staple beer."
},
"style": {
"id": 93,
"categoryId": 8,
"category": {
"id": 8,
"name": "North American Lager",
"createDate": "2012-03-21 20:06:46"
},
"name": "American-Style Lager",
"shortName": "American Lager",
"description": "Light in body and very light to straw in color, American lagers are very clean and crisp and aggressively carbonated. Flavor components should b e subtle and complex, with no one ingredient dominating the others. Malt sweetness is light to mild. Corn, rice, or other grain or sugar adjuncts are often used. Hop bitterness, flavor and aroma are negligible to very light. Light fruity esters are acceptable. Chill haze and diacetyl should be absent.",
"ibuMin": "5",
"ibuMax": "13",
"abvMin": "3.8",
"abvMax": "5",
"srmMin": "2",
"srmMax": "4",
"ogMin": "1.04",
"fgMin": "1.006",
"fgMax": "1.01",
"createDate": "2012-03-21 20:06:46",
"updateDate": "2015-04-07 15:39:26"
}
}],
"status": "success"
}
次のコードは動作しますが、私はより良い方法があると確信しています
override func viewDidLoad()
{
super.viewDidLoad()
let url = URL(string: "http://api.brewerydb.com/v2/beers?key=e3bdce7d0a80584c784cdc4b02459add&name=budweiser")
URLSession.shared.dataTask(with:url!) { (data, response, error) in
if error != nil {
print(error!)
}
else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String: Any]
let jsonArrayData = parsedData?["data"] as! NSArray
let data = jsonArrayData[0] as! NSDictionary
let abv = data["abv"]
print(abv)//Optional(5) in your case
} catch let error as NSError {
print(error)
}
}
}.resume()
}
'parsedData [" data "]'は辞書ではありません。これは辞書の配列です。コードが少ない
abv
を取得してください。 – Moritzああ。 Thanks @ EricAya - 名前とabvが入っている辞書にどうすればアクセスできますか? –
ここの例:http://stackoverflow.com/a/37343547/2227743他にもたくさんの例がありますが、これは既に多くの人に尋ねられています。 :) – Moritz