2017-11-06 13 views
-3

このJSONデータを解析したいですが、できません。入れ子になった辞書を解析できません

JSONデータが

jsondata

私のコードのようなものですが、次のとおりです。

session.dataTask(with: request, completionHandler:{(data , response , error) -> Void in 
    if let data = data { 
      if let jsonObj = try? JSONSerialization.jsonObject(with: data , options: .allowFragments) as! Any { 
     print(jsonObj) 
       if let postdata = (jsonObj as AnyObject).value(forKey: "postdata") { 
        print(postdata) 
        //if let something = postdata["best_before"] as? NSDictionary{ 
         // print(something) 
+1

受信したエラーは何ですか。 – Malik

+1

落ち着いて、少しずつ(あなたが得たり得られないサブレベルをチェックしてください)、デバッグしてください。なぜ、「まあ! AnyObjectとAnyを使用する理由Swift3でNSDictionaryを使用する理由 – Larme

答えて

0

ルートオブジェクトは明らかに辞書([String:Any])だけではなく、何か(Any)で、適切なエラー処理を使用し、オプションのバインディングを使用してオプションを安全にアンラップします。

キーpostdataの値は、辞書の配列([[String:Any]])です。 valueForKeyを使ってはいけません。そして、どうしてあなたが明示的にKVCを必要としているのか説明できない限り、それらの愚かなブリッジはAnyObjectにキャストされます。

.allowFragmentsは、ルートオブジェクトがコレクション型であるため不要です。

 do { 
      if let jsonObj = try JSONSerialization.jsonObject(with: data) as? [String:Any], 
      let postdata = jsonObj["postdata"] as? [[String:Any]] { 
       for data in postdata { 
       for (key, value) in data { 
        print(key, value) 
       } 
       } 
      } 
     } catch { 
     print(error) 
     } 
関連する問題