2017-04-27 15 views
0

私はWebサービスを介して私に送られる次の息子のStringを持っています。その中の辞書にアクセスしようとしていますが、エラーが発生しています。誰かに助言してもらえますか? 私のケースで私のjsonデータにアクセスする方法 - スウィフト

私のJSON文字列:

{"status":200,"message":"Registration success","firstname":"tommy","lastname":"tang","userId":17,"email":"[email protected]"} 

タイプ[[文字列の値を添字ことができない私は取得していますエラー」がアクセスするには、「ステータス」を

  do{ 
       let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: []) 
       print("jsonObject: \(jsonObject)") 

       guard 
        let regArray = jsonObject as? [[String:String]] else{ 

         print("json messed up") 
       } 

       guard 
        let status = regArray["status"] as? String else{ 
         print("error") 
       } 
       print("status: \(status)") 

      }catch let error{ 
       print("print error: \(error)") 
      } 

     }else if let requestError = error{ 
      print("error detail: \(requestError)") 
     }else{ 
      print("unexpected error") 
     } 

試みる私のコード:文字列]]「String型のインデックスと

私は

let regArray = jsonObject as? [[String:Any]] 
を使用する場合でも

同じエラーが発生する

+1

データが辞書形式の間に辞書の配列を作成しています。辞書を作成する

+0

これは簡単です:あなたのJSONはトップレベルの辞書です(まあ、それはまさに辞書です)。だから 'jsonSerializedを? [String:Any] '? – Larme

答えて

0

ユーザーIDとステータスはIntです。したがって、それは[String : Any]でなければなりません。そして、それは単純な配列のdictです。

とコードでは、可能ではないthatsのように、あなたは文字列としてのInt値を割り当てるため

status = regArray["status"] as? String

status = regArray["status"] as? Int

を変更。

関連する問題