1

嘿,我这里有个小问题。AFHTTPRequestOperation我可以使用此代码加载 JSON 文件

   AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSError *error = nil;
   NSDictionary *JSONdata = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
        self.data = JSONdata;
    [self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];

但是当我从 someurl.com/json.html 加载这个 JSON 时 JSONdata 变成了 null 这里是 JSON

{
"status": 200,
"results": [
    {
        "author": {
            "username": "user1",
            "full_name": "User 1"
        }
    }
]
}
<!-- This document saved from someurl.com/json.html -->

我试图下载该文件并从 loaclhost 访问它,但仍然为空。然后我 <!-- This document saved from someurl.com/json.html -->手动删除该html标签,然后可以加载JSON。

我的结论是,使 JSON 无效的 html 标签。我该怎么做才能从 JSON 文件中删除该标签?或者我必须向 NSJSONSerialization 添加一些代码?

4

1 回答 1

3

JSON 字符串必须是完全自包含的。它不能包含 JSON 数据以外的任何内容。认为它与 Javascript 变量赋值的右侧几乎相同:

var x = {"status":200};
        ^^^^^^^^^^^^^^---raw json text

如果您在 json 数据之前之后有任何内容,则基本上是在创建 javascript 语法错误

var x = foo{"status":200}bar;
        ^^^---           ^^^---

如果你的情况,bar上面将是 HTML 注释。它要么是完全有效的 JSON,要么完全无效。中间没有。

于 2013-05-09T17:26:26.960 回答