2016-06-15 19 views
0

配列内のデータを解析したいができない。ご提案があれば教えてください。ここに私のデータのサンプルです:Swiftを使用したNSDataからのJSONの解析

[{"ListSequence":1,"StarTime":"15.06.2016 09:00","WorkTime":15,"EndTime":"15.06.2016 09:15","Appointment":"","CustomerId":"12345","Name":"","Address":"bla bla"}, {"ListSequence":2,"StarTime":"15.06.2016 09:20","WorkTime":15,"EndTime":"15.06.2016 09:35","Appointment":"","CustomerId":"54321","Name":"","Address":"bla bla"}] 

これは私の関数である。このような

func parserJSON(data: NSData){ 
    var names = [String]() 
    do { 
     if let ipString = NSString(data:data, encoding: NSUTF8StringEncoding) { 
      let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 

      if let sequences = jsonDictionary["ListSequence"] as? [[String: AnyObject]] { 
       for sequence in sequences { 
        if let name = jsonDictionary["Name"] as? String{ 
         names.append(name) 
        } 
       } 
      } 
     } 
    } catch { 
     ///alert 
    } 
} 
+0

ListSequenceがStringで、レスポンスが配列 –

+0

です。JSONは辞書ではなくトップレベルの配列です。 – Larme

+0

https://github.com/SwiftyJSON/SwiftyJSONこれを試してください –

答えて

3

JSONはオブジェクトではなく配列を表します。これを試してみてください:

NSJSONSerialization本当に冗長です。すべてが原子値(String)、配列([AnyObject])または辞書([String: AnyObject])です。変換する場合は、一度に1ステップずつ行う必要があります。

+0

これは機能しています。私は本当にあなたの助けに感謝します。良い一日を。 – yagiz

1

変更あなたのコード。 APIからArrayDictionaryになりません。だからこのような変更は

func parserJSON(data: NSData){ 
    var names = [String]() 
    do { 
     if let ipString = NSString(data:data, encoding: NSUTF8StringEncoding) { 
      let jsonArray = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSArray 
      //Now try to iterate Array 

     } 
    } catch { 
     ///alert 
    } 
} 

希望これはあなたに役立ちます。

1

これはあなたのための最も簡単かもしれません

let jsonData:NSArray = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSArray 
1

にNSArrayとして、あなたのデータを使用します。

extension NSData { 
    func fromJSON(options:NSJSONReadingOptions = .AllowFragments) -> AnyObject? { 
     return (try? (NSJSONSerialization.JSONObjectWithData(self, options: options))) 
    } 
} 

あなただけ行うことができたの方法:

data.fromJSON() as? [[String:AnyObject]] 

または任意の文字を入力

にキャストしたい
関連する問題