2017-03-27 16 views
-1

この質問は100回尋ねられましたが、インターネットは私が迅速かつプログラミングに慣れていないために助けにならないので、事前に申し訳ありません。すぐにJSONからデータを抽出する

私はjsonからいくつかのデータを抽出しようとしています。ここで

は私のコードです:

let request = NSMutableURLRequest(url:myUrl! as URL); 
request.httpMethod = "POST"; 

let postString = "email=\(email)"; 

request.httpBody = postString.data(using: String.Encoding.utf8); 

let task = URLSession.shared.dataTask(with: request as URLRequest){ 
    data, response, error in 

    if error != nil { 
     print("error=\(error)") 
     return 
    } 

    var err: NSError? 
    do 
    { 

     let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 
     print(myJson) 
     let name = myJson["name"] 

    } 
    catch let error as NSError { 
     err = error 
    } 
} 
task.resume() 

そしてここでは、JSONはprint(myJson)の外にある:

(
    { 
     name = "TestTest"; 
    } 
) 

しかし、私はのためにエラーが発生します:

let name = myJson["name"] 

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

+0

あなたのJSONのトップレベルのオブジェクトが配列または辞書でなければなりません、あなたは 'mutableContainersをいつものように、あなたのオブジェクト –

+0

をシリアライズが、問題に関連していないする必要があります。だから、あなたはその後、このような何かをする必要があると思いますスイフトでは全く意味がない。 Swift 3では 'NSURL/NSMutableURLRequest'を使わないでください。ネイティブ構造体' URL/URLRequest'があります。 – vadian

+0

よろしくお願いします。 – Jonas

答えて

1

最初の問題この行は次のとおりです。

let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 

データをAnyObject型に指定します。しかし、それは本当に辞書の配列でなければなりません。だから、代わりに、次のように指定する必要があります。もちろん、

let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as [[String:Any]] 

を、あなたは「名前」の値で取得するために辞書の表記を使用することができます前に、配列から項目を抽出する必要があるので、一人で物事を解決しないであろうということ。

let row = myJson[0] 
let name = row["name"] 
+0

@Fahim私のような初心者を助けてくれてありがとうございました!これはログイン画面で、ログインしている間、グローバル変数として使用するユーザーのID(この場合は名前)を取得したいので、Postクエリを実行しています。確かに、常に1つの行があるので、私はforループなしでそれを行うことができますか? – Jonas

+0

@Jonas助けて嬉しいです:)そして、最初の行だけを抽出することができます。私はそれに応じて私の答えを変更しました。 – Fahim

+0

は私の一日を作った。あなたは良いものがあることを願っています! – Jonas

関連する問題