iOS应用程序与邮递员或浏览器中查看的API的JSON之间的差异



我正在使用NSURLSession从MySQL数据库中提取的API中接收JSON。

对于从某个MySQL表中的一个查询,手机似乎无法读取API产生的JSON,即使在Postman和浏览器中看起来不错。实际上,我配置了另一个表格并查询以产生完全相同的JSON,并且手机可以毫无问题地阅读它。我唯一能想到的是,问题表中的JSON中有不可见的角色正在抛弃东西。我比较了Postman中两个表的查询的标题,它们是相同的。

已知nsurlsession是否有隐藏字符或类似的问题?

这是JSON的邮递在Postman中的漂亮印刷:

{
    "comment": [
        {
            "response": "you haven't been paying attention"
        }
    ]
}

这是浏览器显示的内容:

"comment":[{"response":"you haven't been paying attention"}]}

这是Xcode Console显示的内容:

comment = "0(NSNull)"

这是Objective-C代码:

NSURL *dataUrl = [NSURL URLWithString:surl];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *data =[session dataTaskWithURL:dataUrl completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSData *jsonFeed = data;
        NSLog(@"jsonFeed is%@",jsonFeed);
        if (data != nil) {
             NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
                                                         options:kNilOptions
                                                           error:&error];
    NSLog(@"json in async is:%@",json);
        }
    }];
    [data resume];

我怀疑您传递了错误的Content-Type。请在请求中传递正确的Content-Type

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

使用NSMutableURLRequest创建请求,这是一个很好的示例,请检查此请求。链接

最新更新