2016-07-02 4 views
3

値:SwiftyJSONが

// Grabbing the Overlay Networks 

let urlString = "https://test.sdnnw.net/networks/overlay_networks" 
if let url = NSURL(string: urlString) { 
    let URLRequest = NSMutableURLRequest(URL: url) 
    URLRequest.setValue("token", forHTTPHeaderField: "User-Token") 
    URLRequest.setValue("username", forHTTPHeaderField: "User-Auth") 
    URLRequest.HTTPMethod = "GET" 
    Alamofire.request(URLRequest).responseJSON { (response) -> Void in 
    if let value = response.result.value { 
     let json = JSON(value) 
     print(json) 
    } 
    } 
} 

私が取得(正しい)次の結果:

[ 
    { 
    "uuid" : "c8bc05c5-f047-40f8-8cf5-1a5a22b55656", 
    "description" : "Auto_API_Overlay", 
    "name" : "Auto_API_Overlay", 
    } 
] 

私が構築し、以下を実行すると:

// Grabbing the Overlay Networks 

let urlString = "https://test.sdnnw.net/networks/overlay_networks" 
if let url = NSURL(string: urlString) { 
    let URLRequest = NSMutableURLRequest(URL: url) 
    URLRequest.setValue("token", forHTTPHeaderField: "User-Token") 
    URLRequest.setValue("username", forHTTPHeaderField: "User-Auth") 
    URLRequest.HTTPMethod = "GET" 
    Alamofire.request(URLRequest).responseJSON { (response) -> Void in  
    if let value = response.result.value { 
     let json = JSON(value) 
     print(json["name"].stringValue) 
     print(json["description"].stringValue) 
     print(json["uuid"].stringValue) 
    } 
    } 
} 

私は空白の出力を得る - ノーnullnil、またはを、空白です。 Screwed SwiftyJSONここでは、stringValueが正しく動作しない理由(不正なキーワードを使用して検索しているのかもしれません)をクリアすることに近いものは見つかりませんでした。私が間違ってやっていることについて、何かフィードバックをいただければ幸いです。

+0

のstringValueはオプションです。文字列を使用してチェックしてください。 – Dershowitz123

+0

'SwiftyJSON'は実際にはそれほど* swifty *ではありません。そこにない値を解析しようとすると、オプションが得られないので、空の値が得られます。確かに、これはアプリケーションがクラッシュするのを防ぎますが、エラーを見つけるのが少し難しくなります。 – Sulthan

+0

ヒントDershowitz123とスルタンに感謝!宜しくお願いします! – techiejs

答えて

2

JSONでは、[]文字は配列用、{}は辞書用です。

あなたJSON結果:

は[{ "UUID": "c8bc05c5-f047-40f8-8cf5-1a5a22b55656"、 "説明": "Auto_API_Overlay"、 "名前": "Auto_API_Overlay" を}]

は、辞書を含む配列です。

ループを使用してコンテンツを取得します。 SwiftyJSON、タプルとループ(第SwiftyJSONオブジェクトの引数はインデックスであり、第二引数は、コンテンツである)を使用

:彼らが非あるよう

for (_, dict) in json { 
    print(dict["name"].stringValue) 
    print(dict["description"].stringValue) 
    print(dict["uuid"].stringValue) 
} 

Valueで終わるSwiftyJSON propertiesに注意してくださいオプションの getter(値がnilの場合、クラッシュします)。 オプションゲッターはValueを持っていない:

for (_, dict) in json { 
    if let name = dict["name"].string, 
     desc = dict["description"].string, 
     uuid = dict["uuid"].string { 
      print(name) 
      print(desc) 
      print(uuid) 
    } 
} 
+0

エリックDに答えて説明してくれてありがとう!出来た。宜しくお願いします! – techiejs

+0

ようこそ。 :) – Moritz

関連する問題