4

文字列のオブジェクトを取得しようとすると、(Xcode6 BETA 6) でエラーが発生しました。

let jsonString : String = "[{\"name\":[\"Fred\",\"John\"],\"age\":21},{\"name\":\"Bob\",\"age\":35}]"

let myData:NSData? = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)

var jsonResult:NSArray = NSJSONSerialization.JSONObjectWithData(myData!, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray

println(jsonResult.objectAtIndex(0).objectForKey("name").objectAtIndex(0))

print が呼び出されないため、エラーが発生します。誰でもアイデアはありますか?

4

3 に答える 3

1

データへのアクセスを改善し、アクセス時のミスを回避するために、1 つ以上のクラスを作成し、その JSON を逆シリアル化することをお勧めします。

ちなみに、データ型をより明示的にすることで機能します:

let dict = jsonResult.objectAtIndex(0) as NSDictionary
let array = dict["name"] as NSArray

println(array.objectAtIndex(0))
于 2014-08-22T07:40:55.663 に答える
1

別のオプションは、にキャストjsonResultし、構文をArray<AnyObject>使用して必要な値を取得することですsubscript

let jsonString : String = "[{\"name\":[\"Fred\",\"John\"],\"age\":21},{\"name\":\"Bob\",\"age\":35}]"
let myData:NSData? = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
var jsonResult: AnyObject = NSJSONSerialization.JSONObjectWithData(myData!, options: NSJSONReadingOptions.MutableContainers, error: nil);

if let lJsonArray = jsonResult as? Array<AnyObject> {
    println(lJsonArray[0].objectForKey("name")[0])
}
于 2014-08-22T07:43:26.480 に答える