[英]Spring rest controller result wrapping with JsonView / MappingJacksonValue
我有一個Spring API,它允許用戶使用如下視圖參數來指定每個調用的JsonView:
/api/v1/person/1?view=viewName
然后,我使用Spring的MappingJacksonValue來動態設置正確的視圖,而不是使用@JsonView()
注解,最后我只返回MappingJacksonValue實例,該實例產生類似於
[
{ id: 1 },
{ id: 2 }
]
我一輩子都無法弄清楚如何輕松地將MappingJacksonValue實例包裝在ObjectNode中,以便可以將上述代碼段中的所有API結果更改為此
{
"data" : [
{ id: 1 },
{ id: 2 }
]
}
我嘗試使用常規的HashMap <>,但是沒有用-序列化完全忽略了MappingJacksonValue視圖,它還會產生特定於Map的結果
{
data: {
value: [],
serializationView: "com.blah.models.view.View$Id",
filters: null,
jsonpFunction: null
}
}
那么有人可以讓我知道在我的方案中實現結果包裝的最佳方法是什么嗎?
提前致謝!
如果有人碰到這篇帖子,希望做同樣的事情,我意識到我在錯誤地看問題。 我最終創建了ServiceResponse類,並將對象包裝在那里
public class ServiceResponse {
@JsonView(View.Id.class)
private Object data;
public ServiceResponse (Object data) {
this.data = data;
}
}
所以本質上,不是返回new MappingJacksonValue(someReturnObject)
而是返回new MappingJacksonValue(new ServiceResponse(someReturnObject))
。 這樣,所有內容都可以很好地包裝在data
JSON對象中,並且setSerializationView
方法仍然可以正確過濾我的對象。
希望這對某人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.