2017-02-08 25 views
0

JSON文字列を解析する必要がある状況に遭遇しました。文字列に複数の重複キーが含まれていると、重複しているキーのリストを作成する必要があります。たとえば、JSONでJavaの複数の重複キーを削除する

{ 
    "a":1, 
    "b":2, 
    "c":{"a":1, "z":2}, 
    "b":"blah", 
    "c":34 
} 

上記の例では、myリストには、重複しているキーとして 'b'と 'c'が含まれています。 「a」はこのリストにはないでしょう。たとえそれが2回存在していても、「c」の値にあるからです。

new JSONObject(jsonString)と呼ぶと、最初の重複キーが見つかった後に処理が停止しますが、すべての重複キーが検出されます。

私は複数の方法を試しましたが、1つの問題を修正して2番目の問題を作成するという古い問題に直面しています。どんな助けでも大歓迎です。

EDIT:私はお詫びします。 Javaで重複キーを検索し、重複したキーのリストを返す

+4

これは有効なJSONオブジェクトではないため、ほとんどのライブラリはうまく動作しません。 – CollinD

+0

どのように無効ですか?重複キー – user3196429

+0

ハッシュテーブルと連鎖の連鎖に加えて、実装はあなた次第です。 –

答えて

0

json stringをjackson ObjectMapperでこのクラスに変換する特別なオブジェクトを定義することができます。属性タイプに基づいて、stringは適切な属性に変換されます。

ObjectMapper objectMapper = getObjectMapper(); 
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 

が、重複した属性を見つけるために、あなたは Multimapオブジェクトへの入力を変換する必要がありますし、重複キーを見つけるためのforループを実行します。無効な属性を無視するように、次のプロパティを設定する必要があります。