簡體   English   中英

在Spring MVC 4中將POJO作為JSON返回

[英]Return POJO as JSON in Spring MVC 4

我有一個非常簡單的對象,我想以JSON的形式返回

public class Event {

    private String store;
    private Date date;
    private double fee;
    private String kit;
    private String information;

和測試控制器如下

@RestController
@EnableWebMvc
public class UserController {

    @RequestMapping(value = "/user/{username}", method = RequestMethod.GET, produces = "application/json", headers="Accept=*/*")
    @ResponseBody
    public Event getUser(@PathVariable("username") String username){

        Event event = new Event("dummy", new Date(), 4.0, "dummy", "dummy");
        return event;
    }

}

我得到“此請求標識的資源只能根據請求“ accept”標頭生成特性不可接受的響應。”

我的servlet只有此條目

<mvc:annotation-driven />    

如何獲得所需的輸出?

添加

dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.0</version>
    </dependency>

我猜這是內容協商的問題。 您的請求中“ Accept”標頭的值是什么? 可能將其設置為除“ applcation / json”以外的其他值,但是由於“ Accept”標頭值為“ * / *”,因此該控制器方法仍注冊為請求處理程序。 例如“ Accept:text / xml”;

我建議您嘗試的另一件事是返回ResponseEntity而不是Event。 它將使用HttpMessageConverters轉換您的響應(默認情況下,gson用作json類型內容的解析器,如果您的類路徑中存在Jackson,則將使用它代替)。 你可以在這里閱讀更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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