JSON NSDictionary 在输出到日志时显示空描述
Posted
技术标签:
【中文标题】JSON NSDictionary 在输出到日志时显示空描述【英文标题】:JSON NSDictionary showing null description when output to log 【发布时间】:2014-07-17 20:59:37 【问题描述】:我正在学习一些基本的 php、SQL、JSON,以便我可以在我的 ios 程序中使用数据库。在我的应用程序中解析这些信息时我遇到了麻烦。这是我的代码,但每当我运行它时,我的 NSLog 都会显示 (null)。
NSURLSessionConfiguration *config =
[NSURLSessionConfiguration defaultSessionConfiguration];
//@property (nonatomic, strong) NSURLSession *session;
_session = [NSURLSession sessionWithConfiguration:config delegate:self
delegateQueue:nil];
//my test practice site url
NSString *requestString = @"http://sqlphp.site88.net/default.php";
NSURL *url = [NSURL URLWithString:requestString];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSURLSessionDataTask *dataTask = [self.session dataTaskWithRequest:req
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error)
//@property (nonatomic) NSArray *databaseArray;
self.databaseArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//shows (null) on log whenever ran
NSLog(@"%@", self.databaseArray);
];
您也可以随意跳转到网站by clicking here,但如果您不想点击这里是 JSON 字符串。
["id":"1","name":"pippo","surname":"Mr Pippo","age":"108","id":"2","name":"Paperino","surname":"Mr Paperino","age":"109"]
有没有人知道我做错了什么,它没有显示为字符串?我几乎逐字复制了 Big Nerd Ranch 书中的示例来练习这一点,除了他们使用 .json 而不是 .php
【问题讨论】:
【参考方案1】:使用 NSError,它们通常具有您解决错误所需的信息。
我将您的序列化行更改为:
NSArray * databaseArray = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&error];
然后查看错误内容:
(lldb) po error
Error Domain=NSCocoaErrorDomain Code=3840
"The data couldn’t be read because it isn’t in the correct format."
(JSON text did not start with array or object
and option to allow fragments not set.)
UserInfo=0x60800046e680
所以,有了这些信息,我尝试读取数据的实际内容,结果如下:
(lldb) po [[NSString alloc] initWithData:data encoding:4]
<html>
<head>
<title>SQL To JSON Test</title>
</head>
<body>
["id":"1","name":"pippo","surname":"Mr Pippo","age":"108","id":"2","name":"Paperino","surname":"Mr Paperino","age":"109"]
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
这就是问题所在! 您的网页不只是返回您的 JSON 字符串,而是包含它的 HTML 文件!
【讨论】:
谢谢!似乎我的脚本顶部有一些 HTML,底部有一些 javascript 来显示来自我的主机的广告。这是固定的,现在可以工作了。非常感谢!以上是关于JSON NSDictionary 在输出到日志时显示空描述的主要内容,如果未能解决你的问题,请参考以下文章
NSDictionary 到 Xamarin.iOS 中的 Json
.net6 asp:在容器内运行时,默认输出日志格式为 json
NSJSONSerialization 弄乱了结果 NSDictionary