2016-05-02 23 views
1

のマップからキーを取得:私はそうのようなマップを持っているマップ

[One:[example:value1, example2:value2] ,Two[example 1:value3, example2:value4]] 

を私は他のマップの値からVALUE1に一致していんだけど、私は、キーを取得する必要があり、1つまたは2つの依存一致する場合はオンにします。

私が言うのであれば:

if(value1.equals (otherMapValue)) 
    Return One 

私はそれを変更することができますマップ以外にこれを行うには良い方法があるので、もしこのマップは、JSONレスポンスからです。申し訳ありませんが、フォーマットのために私はこれが何をすべき私の携帯電話

+0

入力は何ですか?あなたは 'value1'のようなものを手に入れ、鍵を見つける必要がありますか? – Will

+0

Value1は別のマップの値と一致し、それぞれのクロージャが一致するかどうかをチェックするために値のキーを取得する必要がありますが、example1ではありません。これが正直に可能かどうかは確かではありません。上記のマップはjsonレスポンスであり、もう一方のマップはコンフィグレーションマップです。 –

+0

@naffy_naffy – Vampire

答えて

1

を使用しています:

def someMethod(valueFromOthermap) { 
    def map = [ 
     One: [example1: 'value1', example2:'value2'], 
     Two: [example1: 'value3', example2:'value4'] 
    ] 

    map.findResults { k, v -> 
     valueFromOthermap in v.values() ? k : null 
    } 
} 

assert someMethod('value1') == ['One'] 

あなたの代わりにキーのリストの最初に一致するキーを探している場合は、findResult代わりのfindResults、他のすべてを使用します変更されません。 Map解析にJSONについて
以下に示すように、JSONのresonseを容易Mapに解析することができる:

UPDATE

Map responseMap = new groovy.json.JsonSlurper().parseText(jsonResponseString) 
関連する問題