私が知る限り、すべてのJSONフィールド名は文字列値です。しかし、文字列かどうかを調べるためにJSONの "キー"の文字列チェックを行うコードスニペットが発生しました。もしそうでなければ例外をスローします。それは次のようになります:JSONフィールドを文字列にすることはできますか?
if (!(key instanceof String)){
throw new exception();}
このチェックは必要ですか?
EDIT:
例えば、
while (jp.nextToken() == JsonToken.FIELD_NAME){
String key = jp.getCurrentName();
}
このコードスニペットは文字列だけですJSONトークンに進行するので、JSONがいるので、文字列でないフィールド名が含まれていることができれば、私は思っていたジャクソンパーサは単にそれらのフィールド名をスキップします。 JSON official website(プロキシによって、JSON Data Interchange Standard)から
それが依存?私はGSONで知っているすべてのキーは文字列でなければなりません – Jeeter
@Jeeter "GSONですべてのキーは文字列でなければなりません"という意味ですか? "GSONパーサーはキーが文字列であると見なし、私はJackson Libraryを使ってビルドしています。また、getCurrentNameはオブジェクトではなく文字列を返すので、キーがStringになると仮定しているようです。そのため、JacksonがString以外のフィールド名を処理する方法が不思議でした。有効なJSONには文字列以外のフィールド名を含めることもできます。 –
使用しているパーサーを表示できますか? 'キーとは何か、それがどのように宣言されたのか、何がそれを創り出したのかを教えてください。 –