2016-05-02 22 views
1

Ich habe eine Karte wie folgt:Holen Sie sich den Schlüssel von der Karte der Karte

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

Ich bin in einer anderen Karte von einem Wert Wert1 bin passend, aber ich brauche die Schlüssel zu erhalten, entweder ein oder zwei je wenn es eine Übereinstimmung ist.

Also, wenn ich sage:

if(value1.equals (otherMapValue)) 
    Return One 

Diese Karte von einer Json Antwort ist so, wenn es eine bessere Art und Weise ist dies neben eine Karte zu tun, ich kann es ändern. Sorry für die Formatierung Ich bin mit meinem Handy

+0

Was ist der Eingang? Sie erhalten etwas wie "Wert1" und Sie müssen die Schlüssel finden? – Will

+0

Wert1 wird mit einem Wert aus einer anderen Karte übereinstimmen, und ich habe einige Schließungen, um zu überprüfen, ob sie übereinstimmen, was sie tun, also muss ich den Schlüssel des Werts erhalten, aber nicht Beispiel1 Ich brauche den "Hauptschlüssel", der Eins wäre. .nicht sicher, ob das ehrlich möglich ist..die obige Karte ist eine Antwort von json und die andere Karte ist eine Konfigurationskarte .. –

+0

@naffy_naffy zeige bitte deinen ganzen passenden Code – Vampire

Antwort

1

Dies tun soll:

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'] 

Wenn Sie zum ersten passenden Schlüssel anstelle einer Liste von Schlüsseln suchen, dann findResult anstelle von findResults, alles anderes bleibt unverändert.

UPDATE:
In Bezug auf JSON Map Parsing kann ein JSON resonse leicht zu Map analysiert werden, wie unten dargestellt:

Map responseMap = new groovy.json.JsonSlurper().parseText(jsonResponseString) 
Verwandte Themen