簡體   English   中英

Spring Rest控制器結果包裝與JsonView / MappingJacksonValue

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM