簡體   English   中英

如何使用“ var abcd =”標頭解析json數據

[英]How to parse json data with “var abcd =” header

我在iOS上解析json數據文件時遇到問題。 這是來自data.json文件的示例:

var devs = [
{
"ident":"1",
"firstname":"Jan", 
"lastname":"Kowalski", 
"img":"http://www.placekitten.com/125/125", 
"tech":"iOS, HTML5, CSS, RWD",
"github":"placeholder",
"opensource":"1",
"twitter":"placeholder"
},
{
"ident":"2",
"firstname":"WacĹaw", 
"lastname":"GÄsior", 
"img":"http://www.placekitten.com/124/125",
"tech":"Android, Java, Node.js",
"github":"GÄsiorBKR",
"twitter":"wacek5565"
},

等等。

我使用“普通” json文件:

NSURLResponse *response;
NSError *myError;
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL      URLWithString:@"http://somerailsapplication/posts.json"]     cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0f];
NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&myError];
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];

不幸的是,這種解決方案在這種情況下不起作用。 是否有機會在下載的數據中不搜索特定字符串“ var dev = [”和最后一個“]”的情況下使此工作正常進行?

響應是JavaScript,而不是JSON,因此您將無法直接使用JSON解析器。 如果您無法更改服務器輸出,最簡單的方法就是按照您的建議剝離數據的開頭和結尾。 您也可以將響應嵌入HTML模板中,然后在Webview中對其進行評估,但這似乎還有很多工作要做。

從獲得數據的那一點開始:

NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&myError];
NSMutableString *dataAsString = [[NSMutableString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[dataAsString deleteCharactersInRange:NSMakeRange(0, 11)];
data = [dataAsString dataUsingEncoding:NSUTF8StringEncoding];
NSArray *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];

這會將數據轉換為字符串,刪除前11個字符,將其轉換回數據,然后按常規進行解析。 (由於您的數據在數組中,因此我將其更改為NSArray)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM