2016-11-10 5 views
1

Iは、以下を出力Xcodeで返される配列を有する:このJSON配列からこの特定のノードを抜き出す方法を教えてください。

["userDetails": { 
    id = 31; 
    "user_email" = "[email protected]"; 
    "user_name" = "Steve Downs"; 
    }, "communities": <__NSArrayI 0x600000245f40>(
    { 
    id = 5; 
    name = South; 
    }, 
    { 
    id = 13; 
    name = HurraHarry; 
    }, 
    { 
    id = 15; 
    name = EnclliffeT; 
    } 
    ) 
    ] 

以下のコードが正しくそれぞれの変数に「コミュニティ」内に含まれる値を割り当てます。

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

if let arr = json?["communities"] as? [[String:String]] { 
         self.communitiesArray = arr.flatMap { $0["name"]!} 
         self.communityIdsArray = arr.flatMap { $0["id"]!} 
         } 

        if let arr = json?["userDetails"] as? [AnyObject] { 

         self.playerId = (arr.flatMap { $0["id"]!} as (AnyObject)) as! [String] 
         print (self.playerId); 
        } 

しかし、私はトラブル"userDetails"からidを割り当てるを抱えています。 "userDetails"からidを取得し、それをself.playerIdに割り当てるにはどうすればよいですか?

答えて

0

あなたは、私が信じているだろうさて、この

if let dict = json?["userDetails"] as? [String:String] { 
    self.playerId = dict["id"] 
} 
+0

おかげで、私が手:「?文字列」型の値を割り当てることができません'[String]'と入力してください – RDowns

+0

私はそれを使用しています:self.playerId = [dict ["id"]!] – RDowns

-1

正しいような何かを試すことができます。

guard let item = json?["userDetails"] as? [String: AnyObject], 
    self.playerId = item["id"] as? Int else { 
    return; 
} 
+0

なぜダウン投票しましたか? please –

+1

アイデアは正しいかもしれませんが、Lefterisは 'guard.php'の新しい変数の代わりに' self.playerId'というプロパティを直接使用していますが、これはそのようには動作しません。 – Moritz

関連する問題