NSJSONSerialization 返回 null - Objective-c
Posted
技术标签:
【中文标题】NSJSONSerialization 返回 null - Objective-c【英文标题】:NSJSONSerialization returning null - Objective-c 【发布时间】:2017-02-06 17:48:21 【问题描述】:我正在尝试使用此 URL 测试 NSJSONSerialization ;链接有效,应用程序运行,但是当我记录序列化时,我得到一个空结果。
谁能告诉我我做错了什么?代码:
@implementation ViewController
- ( void )viewDidLoad
[super viewDidLoad];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https:franciscocosta.net/lisbon-spots"]];
NSURLSessionDataTask *task = [[self getURLSession] dataTaskWithRequest:request completionHandler:^( NSData *data, NSURLResponse *response, NSError *error )
dispatch_async( dispatch_get_main_queue(),
^
NSError *jsonError;
NSArray *parsedJSONArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
NSLog( @"%@", parsedJSONArray );
);
];
[task resume];
- ( NSURLSession * )getURLSession
static NSURLSession *session = nil;
static dispatch_once_t onceToken;
dispatch_once( &onceToken,
^
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
session = [NSURLSession sessionWithConfiguration:configuration];
);
return session;
【问题讨论】:
【参考方案1】:看起来您的 JSON 格式不正确。
如果在 Safari 中键入您的链接,然后复制生成的 JSON 并将其粘贴到 JSONLint 等 JSON 验证器中,它会在第 25 行显示错误。看起来有不属于的右括号 (]
)那里。似乎 JSON 包含 2 个根数组对象,我认为这是无效的。
如果将其重构为包含单个字典数组,它会作为有效 JSON 通过 JSONLint 测试。
【讨论】:
谢谢,Duncan,我也这样做了,是的,JSON 有错误以上是关于NSJSONSerialization 返回 null - Objective-c的主要内容,如果未能解决你的问题,请参考以下文章
NSJSONSerialization 返回 null - Objective-c
使用 NSJSONSerialization 将 NSMutableDictionary 转换为 JSON 会返回不同的结果
使用 NSDictionary 访问 NSJSONSerialization 数据
NSJSONSerialization生成NSCFString *和NSTaggedPointerString *