簡體   English   中英

SBJSON 丟失引號

[英]SBJSON losing quotation Marks

我正在使用 SBJSON 解析器來解析 JSON 響應:

{"status":0,"sessions":[{"name":"kldlksdklsdkl","active":false,"status":"saved","type":"web","key":"30228ee71f09b93aaa2d1738","contributor_id":"lance","created_at":"Mon May 02, 2011 02:35 PM","closed_at":"Mon May 02, 2011 02:46 PM"}{"name":"Blahieririe","active":false,"status":"saved","type":"web","key":"dbd2bbcc8681bba6a6532051","contributor_id":"lance","created_at":"Mon May 02, 2011 01:42 PM","closed_at":"Mon May 02, 2011 02:34 PM"},{"name":"Jim","active":false,"status":"saved","type":"web","key":"ec5bcf18356a29bb4490841f","contributor_id":"lance","created_at":"Fri April 29, 2011 02:37 PM","closed_at":"Fri April 29, 2011 02:38 PM"}]}

從使用此代碼的服務器:

NSArray *sessionsArray = [dictionary objectForKey:@"sessions"];
    NSArray *tempArray = [[NSArray alloc] init];
    for(NSString *item in sessionsArray){
        NSLog(@"Session Found: \'%@\'",item);

        NSDictionary *myDictionary = [item JSONValue];
    }

我從 JSON 中得到了一個不錯的數組,但是當我嘗試將每個部分放入 NSDictionary 時,它給了我一個異常,我對其進行了 NSLoged 處理,發現引號已從某些鍵和/或值中刪除,如圖所示這里:

{
active = 1;
"contributor_id" = lance;
"created_at" = "Mon May 02, 2011 03:26 PM";
key = e10e5feeea3425ae213cb4cc;
name = "JSON TEST";
status = active;
type = web;
}

這是 JSON 解析器中的錯誤嗎? 還是我在做一些愚蠢的事情?

引號不是“被刪除”。

在 JSON 中,每個字符串都被引用,但引號本身不是字符串的一部分。 例如,如果你寫

NSArray *sessionsArray = [dictionary objectForKey:@"sessions"];
NSDictionary *session = [sessionArray objectAtIndex:0];
NSString sessionName = [session objectForKey:@"name"];

相應的 session 名稱不會帶引號顯示。

當您NSLog()字典或數組時,Cocoa 使用 NeXTSTEP 屬性列表格式來表示字典/數組。 在這種格式中,如果值是簡單的單詞,引號是可選的。

也就是說,您應該枚舉這些 JSON 數據,如下所示:

NSString *jsonString = …;
NSDictionary *jsonResult = [jsonString JSONValue];
NSArray *sessionsArray = [jsonResult objectForKey:@"sessions"];
for (NSDictionary *session in sessionArray) {
    NSString *sessionName = [session objectForKey:@"name"];
    BOOL sessionActive = [[session objectForKey:@"active"] boolValue];
    NSString *sessionStatus = [session objectForKey:@"status"];
    …
}

暫無
暫無

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

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