2017-07-22 15 views
0

私はJSONを解析し、Restful APIを使用する初心者です。 Whatevs、私はこの問題のために多くを見てきました。しかし、私はそれを理解することができませんでした。私が解析したい辞書のJSON配列を解析する

JSONは次のとおりです。http://jsonplaceholder.typicode.com/users

guard let url = URL(string: "http://jsonplaceholder.typicode.com/users/") else {return} 
    let session = URLSession.shared 

    session.dataTask(with: url) { (data, response, error) in 
     if error != nil { 
      print(error ?? "") 
     } 
     if data != nil { 
      do{ 
       let json = try JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) 

       guard let idk = json as? [Dictionary<String, Any>] else {return} 

       print(idk) 
      } 
      catch{ 
       print(error) 
      } 
     } 
    }.resume() 

私はここにそれまでは来て、私が移動することはできません。たとえば、ID、名前、ユーザー名にアクセスしたいが、もう何をすべきか分からない。そして、もし私がAdressの辞書に飛び込みたいのであれば、私は何を疑問に思いますか?

+0

可能な複製(https://stackoverflow.com/questions/39423367/correctly-parsing-json -in-swift-3) –

+0

JSONレスポンスを解析する方法に関する私の答えを見てみましょう:https://stackoverflow.com/questions/42736798/how-to-parse-json-code-to-swift-3- table -view-data/42743790#42743790 –

+0

alamofireを使用し、任意のオブジェクトをjson結果として渡し、内部配列を次のように渡します。 Alamofire.itsの項目を追加すると、より良い結果が得られます。json array –

答えて

2

これは、あなたがデータを読み取ることができる方法の例です:[スウィフト3で正しく解析JSON]の

for data: Dictionary<String, Any> in idk{ 
     if let address = data["address"] as? Dictionary<String, Any>{ 
       //here the data in address: { .. } is available 
       //for example 
       print(address["city"] ?? "") 
     } 

     //or id 
     print(data["id"] ?? "") 

     //username 
     print(data["username"] ?? "") 
} 
+0

これは私のために働いて、私は論理を得た。しかし、データ:辞書ここで何が起こるのですか?私はこの行を削除し、それはまだ働いたのですか? – Alper

+0

コンパイラの定義ヘルパーに似ていますが、必須ではありません。 –

+0

アドレス辞書が配列の場合はどうなりますか?辞書の代わりに何を使用すればよいですか? – Alper

1

Alper、なぜこれを行うにはSwiftyJSONを使用しないでください。ココアポッドをダウンロードし、Githubページの指示に従ってください:https://github.com/SwiftyJSON/SwiftyJSON

構文解析は非常に簡単になります。 Swift 4ではJSONの方がはるかに優れており、SwiftyJSONのようなライブラリは必要ないと思われます。

+0

SwiftyJSONとAlamofireについてよく知られていますが、JSONの解析ロジックを理解しようとしています。辞書の配列、辞書の唯一のもの、辞書のdicitonariesはどのようにそれらを使用するかを理解しようとしています。 – Alper