SBJsonParser中的BUG

时间:2013-03-01 20:54:34

标签: iphone ios

我正在使用JSON.h将我的字符串解析为一个对象。始终正常工作,但是今天,在尝试使用函数[strJSON JSONValue]进行解析时发生此错误:-JSONValue失败。错误跟踪是:

  

“Error Domain = org.brautaset.JSON.ErrorDomain Code = 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;
}

为什么我的代码在评论该行时工作正常?

2 个答案:

答案 0 :(得分:1)

如错误消息中所述,该错误是由于“JSON之后的垃圾”。你应该检查你传递给它的json。大多数情况下,最后会包含一些垃圾,或者最后没有正确格式化。

答案 1 :(得分:0)

错误意味着在找到JSON对象的结尾后,您输入的输入中有更多数据。这可能意味着您在字符串末尾确实包含非JSON数据。或者它可能意味着你有不平衡的大括号(因此在字符串末尾有一个额外的括号,被认为是垃圾)。

例如,这个JSON最后有垃圾:

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