-1

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;
}

その行にコメントするときにコードが正常に機能するのはなぜですか?

4

2 に答える 2

1

エラー メッセージに記載されているように、そのエラーは "Garbage after 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 に答える