如何将JSON转换为NSArray

我有一个JSON数组在页面上输出。 我想将这个JSON数组转换成NSArray。

在这里输入图像说明

或者像这样转换这个json: 在这里输入图像说明

有人可以让我知道这一步可能是什么? 谢谢!

尝试这个。

 NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

要么

 NSArray * json = [self JSONWithData:data]; +(id)JSONWithData:(NSData *)data { if (!data) { return nil; } id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; if (!json) { // try to clean response NSString * dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; if (!dataString) { dataString = [[NSString alloc] initWithData:data encoding:NSWindowsCP1251StringEncoding]; } NSRange rangeDict = [dataString rangeOfString:@"{"]; NSRange rangeArray = [dataString rangeOfString:@"["]; NSRange range = rangeDict; if ((rangeDict.location == NSNotFound) || (rangeArray.location != NSNotFound && rangeArray.location < rangeDict.location)) { range = rangeArray; } if (range.location != NSNotFound) { dataString = [dataString substringFromIndex:range.location]; NSError * error = nil; if ([dataString length]) { json = [NSJSONSerialization JSONObjectWithData:[dataString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error]; if (!json) { dataString = [dataString stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; error = nil; json = [NSJSONSerialization JSONObjectWithData:[dataString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error]; } if (!json) { dataString = [dataString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; error = nil; json = [NSJSONSerialization JSONObjectWithData:[dataString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error]; } } if (json) { NSLog(@"Response cleaned"); } else { NSLog(@"Failed to parse JSON: %@", [error localizedDescription]); } } } return json; } 

并使用它:

 if (json) { if ([json count] > 0) { NSString * name = json[0]["name"] if (name) { } NSArray *arrayContent = json[0]["array_content"] } } 

对于Swift 3.0

 extension JSONSerialization { final class func jsonObject(with data: Data, checkEscapeSymbols: Bool = false) -> Any? { do { var data = data if !data.isEmpty, let txt = String(data: data, encoding: .utf8) { var newTxt = txt.replacingOccurrences(of: "\\", with: "\\\\") newTxt = newTxt.replacingOccurrences(of: "\\\\/", with: "\\/") newTxt = newTxt.replacingOccurrences(of: "\\\\\"", with: "\"") newTxt = newTxt.replacingOccurrences(of: "\\\"", with: "\"") newTxt = newTxt.replacingOccurrences(of: "\\\\'", with: "\\'") if checkEscapeSymbols { newTxt = newTxt.replacingOccurrences(of: "\0", with: "\\0") newTxt = newTxt.replacingOccurrences(of: "\r", with: "\\r") newTxt = newTxt.replacingOccurrences(of: "\n", with: "\\n") newTxt = newTxt.replacingOccurrences(of: "\t", with: "\\t") } if let data_ = newTxt.data(using: .utf8) { data = data_ } } return try jsonObject(with: data, options: []) } catch { return nil } } } guard let json = JSONSerialization.jsonObject(with: data) as? AnyObject else { return }