2017-05-17 9 views
1

私はSwift 3を初めて使い、次のことをやろうとしています。 私はこのようなJSONレスポンス持っている:私は要求を行うのはここSwift 3、JSONから1つの値を取得

Optional({ 
    "USD_ILS" =  { 
     val = "3.5989"; 
    }; 
}) 

は次のとおりです。

func makeRequest(){ 
    Alamofire.request("http://free.currencyconverterapi.com/api/v3/convert?q=USD_ILS&compact=y").responseJSON { response in 
     print(response.result.value) // result of response serialization 

     let data = JSON(response.result.value) 
     print(data) 

     let val = data["val"].stringValue 
     print(val) 
    } 
} 

私がやりたいすべての文字列(のように、変数に「ヴァル」フィールドを取得していますまたはダブル)。私は今SwiftyJSONを使用していますが、それでもこの後何をするか分からない:

let data = JSON(response.result.value) 
+0

JSONを解析するためにSwiftで 'JSONSerialization'を使用する方法に関する無数の例があります。あなたが試したことであなたの質問を更新し、あなたが持っている問題を明確に説明してください。 – rmaddy

+0

SwiftyJSONライブラリを使用してdata = JSON(response.result.value)を受け取ります。 – Glenn

+0

Glenn、私はあなたのアドバイスに従っていましたが、まだまだ立ち往生しています。私は私の答えを編集しました。それでも助けてくれますか?ありがとう –

答えて

1

あなたはこのようにそれを行うことができます任意のJSON APIを使用せず:(テスト済み)

func makeRequest(){ 
    Alamofire.request("http://free.currencyconverterapi.com/api/v3/convert?q=USD_ILS&compact=y").responseJSON { response in 
     if let JSON = response.result.value { 
      if let dict = JSON as? Dictionary<String,Any> { 
       if let value = dict["USD_ILS"] as? Dictionary<String,Any> { 
        if let val = value["val"] as? Double { 
         print(val) 
        } 
       } 
      } 
     } 
    } 
} 

方法ですあなたはJSONをナビゲートします。起こっていたことは、辞書の中に辞書を持っていて、価値を得るためにもう少し複雑なものになっているということです。

1

あなたはSwiftyJSONを使用して、このようにそれを行うことができます。

let data = JSON(response.result.value) 

guard let value = data["USD_ILS"]["val"].string else { 
     return 
} 

print(value) 
1

はこれを試してみてください。

func getStringFromJSON(json: Any, key: String, defaultValue: String) -> String { 
    if let j = json as? [String : AnyObject] { 
     if let returnString = j[key] as? String { 
      return returnString 
     } 
    } 

    return defaultValue 
} 
関連する問題