2013-05-09 53 views
1

嘿,我在這裏有一個小問題。 我可以使用AFHTTPRequestOperation使用此代碼HTML標記是否使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) { 
}]; 

加載JSON文件,但是當我從someurl.com/json.html 這裏加載該JSON的JSONdata成爲空是JSON

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

我試着下載該文件並從loaclhost訪問它,並仍然爲空。然後手動刪除該html標籤<!-- This document saved from someurl.com/json.html -->,然後可以加載JSON。

我的結論是,使JSON無效的html標記。 我必須做什麼從JSON文件中移除該標籤?或者我必須添加一些代碼到NSJSONSerialization?

回答

3

JSON字符串必須完全獨立。它不能包含JSON數據以外的任何內容。認爲這是相當多的一個Javascript變量賦值的右手側相同:

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

如果JSON數據後OR之前有什麼,你基本上創建JavaScript語法錯誤

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

如果你的情況下,上述bar將是HTML註釋。要麼是完全有效的JSON,要麼是完全無效的。中間沒有。

+0

哦,我明白了。如何處理這個問題,因爲我無法對源JSON做任何事情?我應該下載整個文件並分開json嗎? – 2013-05-09 17:31:28

+1

是的。如果您無法控制json提供程序,則必須將「損壞」的數據按摩到有效的json中。但真的......提供者應該修復他們的破壞系統。 – 2013-05-09 17:33:04

+0

現在我可以將json從html標籤中分離出來,但是它會導致NSString。如何將其轉換爲nsdictionary? – 2013-05-09 18:01:24