2017-09-09 17 views
0

私のAPIからJSONデータを解析しているときに予期しない値が返されています。私は非常に新しく速いですが、私は1つの "キー"を受け取りましたが、今では2つを追加しました。値を適切に解析できないようです。スウィフトでネストされたJsonデータを解析する3

これは私のコードが受け取っているアドレスから収集されたjsonです。(読んでも読みにくいのは残念ですが、私のルビーのAPIで改行をやっていない方法は残念です) )現時点では

  { 
    "ratings":{ 
    "elements":{"Ready Position":[{"description":"Neutral Grip","values":"1,2,3,4,5"},{"description":"Back Straight (Concave ir Convex?)","values":"1,2,3,4,5"},{"description":"Body Low \u0026 Feet a little more than sholder width apart","values":"1,2,3,4,5"},{"description":"Weight on Balls of Feet","values":"1,2,3,4,5"},{"description":"Head Up","values":"1,2,3,4,5"},{"description":"Sholder Blades Close","values":"1,2,3,4,5"},{"description":"Eyes Drilled","values":"1,2,3,4,5"}],"Split Step":[{"description":"Ready Position Conforms","values":"Yes,No"},{"description":"Body Position Low","values":"1,2,3,4,5"},{"description":"Legs Loaded/Prepared","values":"1,2,3,4,5"}]} 
}, 
    "comments":{} 
} 

さて、私のSWIFTコードは、この

let playerAPIurl = "http://linkcoachuat.herokuapp.com/api/v1/session/element?organisation=" + userorganisation + "&group=" + urlGroupSelected + "&sport=" + usersport 
    print(playerAPIurl) 
    var request = URLRequest(url: URL(string: playerAPIurl)!) 
    request.httpMethod = "GET" 



    let configuration = URLSessionConfiguration.default 
    let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main) 

    let task = session.dataTask(with: request) { (data, response, error) in 
     if error != nil { 
      print("ERROR") 
     } 
     else{ 

      do { 


       let json = try JSONSerialization.jsonObject(with: data!) as? [String: AnyObject] 

       print(json) 

のように見え、これは、この印刷(JSON)から

Optional({ 
    comments =  { 
    }; 
    ratings =  { 
    }; 
}) 
を取得して出力イムです

私はコメントの部分で何かを得るべきではないと知っていますが、評価の部分にはいくつかのデータがあるはずですか?

ので、JSONが供給し、それを解析に対処した後、私は[「評価」] [「要素」]とそのイム後のこの部分にアクセスする必要があり、事前にすべての良い

感謝し、私の中で裸ください。私は非常に迅速に迅速に

ありがとう

+0

すべてのあなたのコードで出力を取得した場合は基本的に正しいです(ところでスウィフト3に標準JSON辞書は '[文字列:任意]です。')。間違った形式のURLを使用していると思われます。パーセントエンコーディングが自動的に処理されるため、URLComponents/URLQueryItemsでURLを構成することを強くお勧めします。この問題とは無関係ですが、 'GET'がデフォルトであるため、' URLRequest'は必要ありません。ちょうどURLを渡す – vadian

+0

申し訳ありませんが、私のコメントを編集したが削除した。私はあなたのURLを試しました、そして、データは戻って来ません。それを確認してください。 {"ratings":{}、 "comments":{}} –

+0

URLは私のURLではありませんでした(URLに入力されたデータを入力します)。 api – Ray

答えて

0

以下のコードを試してみてください。以下のコードで使用されているURLにJSONデータがあります。このコードは出力を正しく出力しています。

func testApi(){ 
     let url = URL(string: "https://api.myjson.com/bins/jfccx") 

     let session = URLSession.shared 
     let request = URLRequest(url: url!) 

     //create dataTask using the session object to send data to the server 
     let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in 

      guard let data = data, error == nil else { 
       return 
      } 

      do { 
       //create json object from data 
       if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { 
        print(json) 
       } 

      } catch let error { 
       print(error.localizedDescription) 
      } 
     }) 
     task.resume() 
    } 

output

関連する問題