[英]How can I get JSON data when the value is a JSON value with swiftyJSON
我在我的iOS項目中使用swiftyJSON,但在有效JSON中獲取一些數據時遇到了一些麻煩...
whoJson:
[
{
"name": "[{\"code\":\"en\",\"name\":\"John\"},{\"code\":\"fr\",\"name\":\"Jacques\"}]",
"id": 1
},
{
"name": "[{\"code\":\"en\",\"name\":\"Bob\"},{\"code\":\"fr\",\"name\":\"Robert\"}]",
"id": 11
}
]
使用此代碼:
println(who[0]["name"])
結果是:
[{"code":"en","name":"John"},{"code":"fr","name":"Jacques"}]
如何獲得John或Jacques的價值觀? 我試過了,但是沒用...
println(who[0]["name"][0]["name"])
name
的值本身就是一個JSON字符串。
將字符串轉換為NSData
實例(使用正確的字符串編碼-我在這里僅以NSUTF8StringEncoding
為例,因為它通常適用於大多數情況):
var name : NSString = who[0]["name"] as! NSString var nameAsData : NSData? = name.dataUsingEncoding(NSUTF8StringEncoding)
Objective-C的:
NSString *name = who[0][@"name"]; NSData *nameAsData = [name dataUsingEncoding:NSUTF8StringEncoding];
然后使用以下命令將該數據轉換為JSON對象(在這種情況下為數組):
迅速: var error : NSError? var names : NSArray = NSJSONSerialization.JSONObjectWithData(nameAsData!, options: nil, error: &error) as! NSArray; if (error != nil) { NSLog("Error reading JSON: %@", error!.localizedDescription) }
Objective-C的:
NSError *__autoreleasing error; NSArray *names = [NSJSONSerialization JSONObjectWithData:nameAsData options:kNilOptions error:&error]; if (error) { NSLog(@"Error reading JSON: %@", error.localizedDescription); }
因此,現在,除非解析nameAsData
的JSON時出錯,否則names
應該是NSDictionary
對象的NSArray
。 然后,您可以使用它來做任何您想做的事–例如,要獲得“ John”或“ Jacques”,您可以這樣做:
NSLog("first name: %@", names[0]["name"] as! NSString) // John NSLog("second name: %@", names[1]["name"] as! NSString) // Jacques
Objective-C的:
NSLog(@"first name: %@", names[0][@"name"]); // John NSLog(@"second name: %@", names[1][@"name"]); // Jacques
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.