-1

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

“错误域=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;
}

为什么注释该行时我的代码可以正常工作?

4

2 回答 2

1

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

于 2013-03-04T19:08:47.170 回答
0

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

例如,这个 JSON 结尾有垃圾:

{
    "foo": "bar",
    "baz": {
        "one": 1,
        "two": 2
    }
}
}
于 2013-03-01T22:48:32.363 回答