Ich habe eine große Map<String, Object>
, die der Rückgabetyp einer Feder RestController Aktion ist. Die Karte ist im Grunde String - String-Paare mit einem String - Map namens Kontext. Ich möchte die Ausgabe JSON in den Kontext der erste sortieren. Ich fand die @JsonPropertyOrder
als eine Lösung, wenn das zurückgegebene Objekt Eigenschaften hat. Leider funktioniert es nicht mit meiner Map.Wie kann ich Json Eigenschaften in einer Feder sortieren RestController
@RestController
public class MyController {
@RequestMapping("/test.json")
@JsonPropertyOrder(value = {"context"}, alphabetic = true)
public Map<String, Object> response() {
Map<String, String> context = new HashMap<>();
context.put("environment", "dev");
Map<String, Object> myMap = new HashMap<>();
myMap.put("context", context);
myMap.putAll(fillMyMap());
return myMap;
}
private Map<String, String> fillMyMap() {
Map<String, String> myMapFillValues = new HashMap<>();
myMapFillValues.put("test", "foo");
myMapFillValues.put("test2", "bar");
return myMapFillValues;
}
}
Deshalb möchte ich die Ausgabe wie diese
{
"context": {
"environment": "dev"
},
"test": "foo",
"test2": "bar"
}
statt dessen:
{
"test": "foo",
"test2": "bar",
"context": {
"environment": "dev"
}
}
Sie können dies nicht mit HashMap tun, da es nicht die Reihenfolge verwaltet. Wenn Ihnen die Reihenfolge wichtig ist, können Sie LinkedHashMap oder eine andere Karte verwenden, die die Reihenfolge aufrechterhält. Überprüfen Sie, ob linkedHashMap funktioniert. – mlecz
Würde diese Anmerkung nicht einfach dazu dienen, die Elemente * innerhalb von * 'context' zu alphabetisieren? – chrylis
@mlecz - Thx, es hat mein Problem gelöst. – Sigee