ios - NSJSONSerialization - 如何正确地将 JSON 转换为 NSArray?

标签 ios json nsjsonserialization

我遇到了以下问题: 我想要将我的 iPhone-App 与服务器上的数据库连接起来。因此,我使用一些(简单的).php 文件来管理对数据库的访问。插入新数据已经可以,但是我在将获取的数据转换为 NSMutableArray 时遇到了一些麻烦:

NSURL *contentURL = [NSURL URLWithString:[kHOSTURL stringByAppendingString:kGETBarsURL]];
NSLog(@"URL : %@", contentURL);

NSData *contentData = [NSData dataWithContentsOfURL:contentURL];
NSLog(@"Data : %@", contentData);

NSError *e = nil;
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:contentData
                                                            options:kNilOptions
                                                              error:&e];
NSLog(@"JSON : %@", jsonArray);
NSLog(@"Error : %@", e);

输出是这样的(我是 'XX' 并缩短了 'Data :'):

2012-04-28 13:49:37.229 XX[14434:f803] URL : http://xx/getBars.php
2012-04-28 13:49:37.389 XX[14434:f803] Data : <5b7b2275 6e697175 65223a22 34222c22 4e616d65 223a2254 65737422 2c224465 7461696c 73223a22 54686973 49734154 65737422 7d2c7b22 ...>
2012-04-28 13:49:37.390 XX[14434:f803] JSON : (null)
2012-04-28 13:49:37.392 XX[14434:f803] Error : Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Garbage at end.) UserInfo=0x6daa610 {NSDebugDescription=Garbage at end.}

如果我在浏览器中打开页面,它看起来像这样:

[{"unique":"4","Name":"Test","Details":"ThisIsATest"},
 {"unique":"5","Name":"Test","Details":"ThisIsATest"},
 {"unique":"6","Name":"Test","Details":"ThisIsATest"},
 {"unique":"7","Name":"Test","Details":"ThisIsATest"},
 {"unique":"8","Name":"Test","Details":"ThisIsATest"},
 {"unique":"9","Name":"Test","Details":"ThisIsATest"},
 {"unique":"10","Name":"Test","Details":"ThisIsATest"}]

我还在 NSJSONSerialization 中尝试了其他选项,但没有用 :( 有人可以帮我吗?

2012-04-28 14:18:30.192 XX[14541:f803] Encoding : [{"unique":"4","Name":"Test","Details":"ThisIsATest"},{"unique":"5","Name":"Test","Details":"ThisIsATest"},{"unique":"6","Name":"Test","Details":"ThisIsATest"},{"unique":"7","Name":"Test","Details":"ThisIsATest"},{"unique":"8","Name":"Test","Details":"ThisIsATest"},{"unique":"9","Name":"Test","Details":"ThisIsATest"},{"unique":"10","Name":"Test","Details":"ThisIsATest"}]
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-16106315-6']);
  _gaq.push(['_setDomainName', '.xx.de']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
  })();

</script>

最佳答案

很明显,您最后确实有“垃圾”。你有一个 JavaScript block ,虽然在浏览器中不可见,但它仍然从你的 php 脚本返回。删除它,你应该可以开始了。

关于ios - NSJSONSerialization - 如何正确地将 JSON 转换为 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363274/

相关文章:

javascript - 将 JavaScript 对象转换为 JSON 并 POST 它

ios - Realm 迁移,初始化位置

json - 将 map[string]string 嵌入 Go JSON 编码中,无需额外的 JSON 属性(内联)

ios - webview 在 swift 3 中打开 native fb 应用程序?

json - 在 elm 中使 Json.Decode 不区分大小写

iphone - NSJSONSerialization 不创建键值对

swift - NSInvalidArgumentException - 'Invalid top-level type in JSON write' - swift

php - 尝试快速解析 JSON 但无法正常工作

ios - 未在 UITableView 中加载联系人

objective-c - 使用 Objective-C 的 for 循环在屏幕上显示按钮