2016-10-05 27 views
2

JSONファイルから特定のデータを取得する簡単なリクエストを行っていますが、正確なデータを取得する際に問題が発生しています。Alamofireで配列キー値を取得

JSONファイル:

{ 
    "Something1": { 
     "Added": "09-10-2016", 
     "Expires": "09-12-2016", 
     "Reliability": "78%", 
     "Views": "2", 
     "Priority": "High" 
    }, 
    "Something2": { 
     "Added": "09-11-2016", 
     "Expires": "09-13-2016", 
     "Reliability": "98%", 
     "Views": "5", 
     "Priority": "Low" 
    } 
} 

SWIFTコード:print(JSON["Something1"])

Alamofire.request("https://example.com/args.json").responseJSON { response in 
      if let JSON = response.result.value as? [String:AnyObject] { 
       print(JSON["Something1"]) 
      } 
     } 

、それがになっていますが、私はprint(JSON["Something1"]["Views"])をしようとするとエラーがスローされただけのようSomething1のためにすべてを印刷します例えば。これを修正するにはどうすればいいですか?

+0

JSON ["Something1"]を[String:AnyObject]としてキャストする必要があると思います – koropok

+0

@koropokそれは間違いなく私のためにしました!ありがとうございました! – Matt

+0

ようこそ。 – koropok

答えて

3

あなたの問題はAlamofireとは関係がありません。私は恐れますが、それはSwiftを使用しているJSONの方が大事です。あなたの場合、最初のオプションのバインディングを作成するときには[String: AnyObject]に変換されていますが、これは正しいので、これはJSON["Something1"]のサブスクリプトに含めることができます。

JSON["Something1"]["Views"]で再度添字しようとすると、コンパイラはJSON["Something1"]の文字列を認識しないため、辞書として使用することはできません。オプションでネストされているため、辞書に再度キャストする必要があります

if let nestedDictionary1 = JSON["Something1"] as? [String: AnyObject] { 
    // access individual value in dictionary 

    if let views = nestedDictionary1["Views"] as? Int { 
     print(views) 
    } 
} 

Appleのこのarticleでは、JSONでの作業の詳細を読むことができます。

私はこれがあなたに役立つことを願っています。

関連する問題