我有一個巨大的Map<String, Object>
,這是一個spring RestController動作的返回類型。 該地圖基本上是String - String與String - Map的上下文對。 我想排序輸出json的上下文是第一個。 當返回的對象具有屬性時,我找到了@JsonPropertyOrder
作爲解決方案。不幸的是,它不適合我的地圖。如何排序彈簧中的Json屬性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;
}
}
所以,我想這樣的
{
"context": {
"environment": "dev"
},
"test": "foo",
"test2": "bar"
}
而不是此輸出:
{
"test": "foo",
"test2": "bar",
"context": {
"environment": "dev"
}
}
你不能用HashMap來做到這一點,因爲它沒有維護順序。如果您關心訂單,您可以嘗試LinkedHashMap或維護訂單的其他地圖。檢查linkedHashMap是否可以工作 – mlecz
這個註解是不是僅僅說明* * context中的項* *? – chrylis
@mlecz - Thx,它解決了我的問題。 – Sigee