IOS应用程序收到的来自API的JSON与邮递员或浏览器中查看的JSON之间存在差异

IOS应用程序收到的来自API的JSON与邮递员或浏览器中查看的JSON之间存在差异,ios,objective-c,json,nsurlsession,Ios,Objective C,Json,Nsurlsession,我使用NSURLSession从PHP编写的API接收JSON,该API从MYSQL数据库中提取JSON 对于某个MYSQL表中的一个查询,手机似乎无法读取API生成的JSON,即使它在Postman和浏览器中看起来很好。事实上,我配置了另一个表和查询来生成完全相同的JSON,手机可以毫无问题地读取它。我唯一能想到的是,问题表和查询中的JSON中存在一些不可见的字符,这些字符会让事情变得糟糕。我比较了Postman中两个表中查询的标题,它们是相同的 NSURLSession是否存在隐藏字符等问题

我使用
NSURLSession
从PHP编写的API接收JSON,该API从MYSQL数据库中提取JSON

对于某个MYSQL表中的一个查询,手机似乎无法读取API生成的JSON,即使它在Postman和浏览器中看起来很好。事实上,我配置了另一个表和查询来生成完全相同的JSON,手机可以毫无问题地读取它。我唯一能想到的是,问题表和查询中的JSON中存在一些不可见的字符,这些字符会让事情变得糟糕。我比较了Postman中两个表中查询的标题,它们是相同的

NSURLSession是否存在隐藏字符等问题

这就是在Postman中打印的JSON的外观:

{
    "comment": [
        {
            "response": "you haven't been paying attention"
        }
    ]
}
这是浏览器显示的内容:

"comment":[{"response":"you haven't been paying attention"}]}
这是Xcode控制台显示的内容:

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];

我怀疑您传递的内容类型有误。请在请求中传递正确的
内容类型

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

使用
NSMutableURLRequest
创建请求,下面是一个很好的请求示例,请检查此示例

是否需要任何标题?检查postman中的标题并传递相同的标题。postman有一个可以生成Objective-C的功能。它不是漂亮的Objective-C代码,但它可以帮助您理解不同之处。