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 になりました。

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

そのファイルをダウンロードしてloaclhostからアクセスしようとしましたが、それでもnullになりました。次に、その html タグ <!-- This document saved from someurl.com/json.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 に答える