2017-06-01 6 views
1

jsonStrで特定のキーが存在するかどうかを確認する方法は、jsonStr.has("key")を使用して確認しています。複数のキーが存在するかどうかを確認するには、それらを別々にチェックする必要があります。 Javaのメソッドはありますか?提供されたjsonStrに存在しないものがあれば、それらのキーのリストを効率的にチェックできますか?提供されたjsonObjectにキーがない場合、効率的にチェックする方法はありますか?

答えて

1

リスト/セットに必要なすべてのキーを追加します。そして、あなたはすべてのキーは基本的にJSONObject

1

に存在しているかどうかを確認するために

myKeyList.stream().allMatch(key->jsonStr.has(key)) 

を使用することができます...これらJsonObjectの実装の第

大半は、JSONのプロパティが保持されているjava.util.Mapを使用しています。主にMapには1つのメソッドboolean containsKey(Object key);しかないので、ほとんどの場合でなければ、の実装では複数のキーをチェックする方法がありません。

1

あなたがJsonObjectの実装を見れば、それはすべての要素を格納するためにLinkedTreeMapを使用しています。

private final LinkedTreeMap<String, JsonElement> members = 
    new LinkedTreeMap<String, JsonElement>(); 

(それはまたSet<String>を返しますkeySet()方法を、持っていますが、implementionがまったく同じ機能を使用していますfind()has()としています。

だから、あなたは次のオプションがあります。あなたはJSONObject

  • に存在するかどうかを確認したいキーのあなたのリストの上に

    1. 反復デシリアライズ中に存在するキーのSet<String>を作成する独自のデシリアライザを作成あなたはSet<String>の希望キーと効果的に比較することができます。
  • 関連する問題