

Xcode7.0を用いて、  
Swift2.0環境下で開発を行っております。

JSONのデータ例：

[code]

    [
        {"Name":"よしろう", "sex":"男"}, 
        {"Name":"フネ", "sex":"女"}, 
        {"Name":"こじろう", "sex":"男"}
    ]
    
[/code]

このJSONデータから

[code]

    ["よしろう", "フネ", "こじろう"]
    
[/code]

の配列を作成したいと考えています。

私のコード（一部省略）....

[code]

    var delaylineArray: String! = []
    
    -----中略---------
    
    let json = JSON(data: data!)
    
    while 0 < 1 {
        if let line = json[0]["Name"].string {
            self.delaylineArray.append(line)
        } else {
            break
        }
    }
    
    -----略------------
    
[/code]

このような形で取り出しをしようと考えたのですが、  
delaylineArrayをprintで出力してみると

[code]

    ["よしろう", "よしろう", "よしろう", "よしろう", "よしろう",,,,,,,,,,]
    
[/code]

というような配列になってしまいます。

フネやこじろうなどが含まれたオブジェクトにどうアクセスすれば良いか分からないため、  
教えていただけると嬉しいです。


CC BY-SA 3.0
2015-12-01T09:03:20.973
19511
2016-09-29T09:52:22.473
2015-12-01T09:30:04.590
7290
13474
question
swift json
SwiftyJSONを用いた文字列の取り出し方について


最初の要素だけの配列になってしまうのは、

[code]

    while 0 < 1 {
        if let line = json[0]["Name"].string {
    
[/code]

ここで`json[0]`として常に最初の要素を取得しているからですね。

下記のようにして、JSONを１つずつループするか、

[code]

    for (index, subJson): (String, JSON) in json {
        if let line = json["Name"].string {
            self.delaylineArray.append(line)
        }
    }
    
[/code]

一番外側の要素が配列であることがわかっているなら、`map`を使うとシンプルに書けます。

[code]

    let delaylineArray = json.arrayValue.map { $0["Name"].stringValue }
    
[/code]


CC BY-SA 3.0
2015-12-01T13:04:58.420
19523
2015-12-01T13:04:58.420
5519
19511
answer