簡體   English   中英

當值是帶有swiftyJSON的JSON值時如何獲取JSON數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM