我正在使用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;
}
为什么我的代码在评论该行时工作正常?
答案 0 :(得分:1)
如错误消息中所述,该错误是由于“JSON之后的垃圾”。你应该检查你传递给它的json。大多数情况下,最后会包含一些垃圾,或者最后没有正确格式化。
答案 1 :(得分:0)
错误意味着在找到JSON对象的结尾后,您输入的输入中有更多数据。这可能意味着您在字符串末尾确实包含非JSON数据。或者它可能意味着你有不平衡的大括号(因此在字符串末尾有一个额外的括号,被认为是垃圾)。
例如,这个JSON最后有垃圾:
{
"foo": "bar",
"baz": {
"one": 1,
"two": 2
}
}
}