2013-03-01 20 views
-1

我使用JSON.h將我的字符串解析爲對象。總是工作正常,但今天,發生此錯誤,同時嘗試解析功能[strJSON JSONValue]:-JSONValue失敗。錯誤跟蹤:SBJsonParser中的BUG

「錯誤域= org.brautaset.JSON.ErrorDomain碼= 10 \」 垃圾後JSON \ 「的UserInfo = {0xd3076b0 = NSLocalizedDescription JSON後垃圾}」

所以當我調試知道發生什麼事,我把一個斷點功能- (id)fragmentWithString:(id)repr和我的代碼,在此行中輸入:

// We found some valid JSON. But did it also contain something else? 
if (![self scanIsAtEnd]) { 
    [self addErrorWithCode:ETRAILGARBAGE description:@"Garbage after JSON"]; 
    return nil; 
} 

,並返回我的錯誤,我想。這是什麼意思?爲什麼當我評論這行代碼時:

if (![self scanIsAtEnd]) { 
    [self addErrorWithCode:ETRAILGARBAGE description:@"Garbage after JSON"]; 
    return nil; 
} 

爲什麼我的代碼在註釋行時工作正常?

+0

抱歉格式=/ – 2013-03-01 20:58:30

+4

該錯誤是因爲@「JSON後的垃圾」。你應該檢查你傳遞給它的json。 – iDev 2013-03-01 21:04:22

+1

@ACB謝謝你... json錯了;在末尾 – 2013-03-04 13:50:17

回答

1

如在錯誤消息中提到,該錯誤是因爲「JSON後垃圾」的。你應該檢查你傳遞給它的json。大多數情況下,最後會包含一些垃圾,或者最後沒有正確格式化。

+0

你是對的。 JSON是正確的,但它是與;最後。 =(這就是爲什麼發生這個錯誤。 – 2013-03-04 20:31:27

0

該錯誤意味着在找到JSON對象的末尾之後,您輸入的內容中會有更多數據。這可能意味着你在字符串的末尾字面上有非JSON數據。或者這可能意味着你有不平衡的大括號(因此在被認爲是垃圾的字符串末尾有一個額外的大括號)。

例如,這JSON在端部垃圾:

{ 
    "foo": "bar", 
    "baz": { 
     "one": 1, 
     "two": 2 
    } 
} 
}