gpt4 book ai didi

iphone - Json 解析问题,但当我将响应复制到 txt 文件中时工作正常

转载 作者:行者123 更新时间:2023-11-29 04:07:58 25 4
gpt4 key购买 nike

这是我解析 json 服务的代码。但我在 json 字典中得到 nil 值。但是当我复制 json 响应并创建 .txt 文件并解析它时。它运作良好。奇怪的问题。

-(void)viewDidLoad
{
[super viewDidLoad];

dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:@"http://www.checker.co.il/testing/c_pda-load_reports_list.php?app=1"];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}

- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
}

我收到了这种类型的回复。

{"204281":{"rpID":"204281","ReportTitle":"Main Performance 
Analysis","ReportOrder":"2","URL":"report-network-status.php?ClientID=106&BranchID=&SetID=&
PropID=&props=&reportDateArng=3&hdrf_chosenCycleExtent=7&rangeStartd=0&rangeStartm=0&
rangeStarty=0&rangeEndd=0&rangeEndm=0&rangeEndy=0&pastDateCyclesNumber=2&selectedCycleExtent=&
showClientColorGroup=1&displayType=3&DyChartType=Bar2D&DycX=400&DycY=350&isPopup=0&
callingReportPageName=report-network-status.php&ReportTitle=\"%20
\"","ReportCategory":"Performance","CategoryRow":"0","CategoryCol":"4"},"204282":
{"rpID":"204282","ReportTitle":"Performance According to
Ownership","ReportOrder":"5","URL":"report-property.php?ClientID=106&SetID=&PropID=78&
PropForFiltering=&props=&WorkerID=0&watchedReviews=&reportDateArng=1&hdrf_chosenCycleExtent=&
rangeStartd=0&rangeStartm=0&rangeStarty=0&rangeEndd=0&rangeEndm=0&rangeEndy=0&
pastDateCyclesNumber=2&selectedCycleExtent=&displayType=3&DyChartType=Column2D&DycX=400&DycY=250&
callingReportPageName=report-property.php&js_refresh=0&js_submit=0&
isPopup=0","ReportCategory":"Performance","CategoryRow":"0","CategoryCol":"4"}}

提前致谢。 :)

最佳答案

  1. dthien 是对的,您需要使用 NSURL

  2. danh 是对的,您应该查看错误。您可以查看 error.localizedDescription,但这并不总是有帮助。您可能会收到 error.code 3840,如果您查看 error.userInfo 字典,您可能会看到类似“JSON 文本没有从数组或对象开始,并选择允许不设置片段。”

  3. 每当响应 JSONObjectWithData 时出现错误,您都应该查看数据。因此,在 JSONObjectWithData 之前,执行以下操作:

    NSLog(@"%@", [[NSString alloc] initWithData:responseData
    encoding:NSUTF8StringEncoding]);
  4. 执行此操作时,您可能会注意到数据不包含 JSON 字符串。您可能遇到身份验证问题,并且可能需要使用 NSURLConnection 而不仅仅是 dataWithContentsOfURL,因为前者可以让您对连接进行更详细的控制。正确的后续步骤取决于身份验证问题的性质。有两种基本类型的身份验证:

    • 挑战-响应身份验证:如果您进行了此类身份验证,并且在网络浏览器中提取了 JSON URL,您会看到一些弹出窗口,要求提供用户凭据。以编程方式,如果您写了 didReceiveAuthenticationChallenge ,你会看到它会被调用。无论如何,如果这是您的身份验证类型,请参阅 Authentication ChallengesURL 加载系统编程指南

    • 基于 HTML 的身份验证:您可以判断是否属于这种情况,如果 (a) 您的响应是 HTML 登录页面;或 (b) 如果您的 willSendRequest当您的请求被重定向到登录页面时,将调用该方法。如果是这种情况,对此的正确处理在一定程度上取决于服务器程序员如何处理身份验证问题,以及您希望如何处理它(例如,您想向用户显示身份验证页面吗?您想使用一些之前建立的凭据?等等)。

    如果您查看该 responseData 的内容,问题将是不言而喻的。如果您看到类似 HTML 登录页面的内容,那么您可能正在处理后者。

关于iphone - Json 解析问题,但当我将响应复制到 txt 文件中时工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com