簡體   English   中英

在Java / Spring應用程序中使用JSON時如何處理正斜杠?

[英]How to deal with forward slashes when using JSON in a Java/Spring application?

存在一個函數,該函數解析通過Postman傳遞的JSON,並用於填充對象。 然后,在GSON庫的幫助下,該對象以JSON的形式返回。

盡管這很好,但將要填充的類變量之一必須能夠處理正斜杠(即,解析/some/address並將其分配給我的類成員customer_url並返回給用戶customer_url : /some/address

這適用於所有輸入, 在請求中的任何地方都使用/除外 這是一個例子:

http://localhost:8080/myApp/myInterface/populate/someObject/{"SOME_RANDOM_FIELD_TO_EXTRACT_STUFF_FROM": "/some/address" }

並且它返回404 NOT FOUND錯誤。

如果我也可能在這里出錯,這是我控制器中的后端代碼:

    @RequestMapping(value = "/populate/someObject/{json}", method = RequestMethod.PUT, headers = "Accept=application/json", produces = {
            "application/json; charset=UTF-8" })
    @ResponseBody
    public ResponseEntity<String> getPopulateAndReturn(@PathVariable("json") String json) {
        JsonService jsonService = new JsonService();
        MyClass obj = populateThis(jsonService.convertJsonInputToJsonObject(json));
        Gson gson = new Gson();
        return new ResponseEntity<String>(gson.toJson(obj), HttpStatus.OK);
    }

我已經查看了相關的問題,但是沒有人能夠引導我找到解決方案,也無法更好地理解問題。

簡直不敢錯過。

因此,問題在於后端功能與RequestMethod交互的方式。 這是將JSON發送到應用程序並使應用程序以某種方式使用的正確函數:

@RequestMapping(value = "/populate/someObject", method = RequestMethod.PUT, headers = "Accept=application/json", produces = {
        "application/json; charset=UTF-8" })
@ResponseBody
public ResponseEntity<String> getPopulateAndReturn(@RequestBody String json) {
    JsonService jsonService = new JsonService();
    MyClass obj = populateThis(jsonService.convertJsonInputToJsonObject(json));
    Gson gson = new Gson();
    return new ResponseEntity<String>(gson.toJson(obj), HttpStatus.OK);
}

它可以按預期的方式在請求中填充任何/ (正斜杠)。

需要使用@RequestBody接收JSON請求。 不應在URL中直接提供JSON輸入(感謝您指出@chrylis)。

使用Postman時,單擊Body類別,然后將您的JSON輸入粘貼到此處,如下所示:

向郵遞員提出PUT請求

盡管使用了PUT請求,還是忽略了對象本身的返回; 想測試並確保沒有其他問題。 在最佳實踐的努力下,它應該只返回正確的HttpStatus (如果我錯了,請隨時糾正我)。

暫無
暫無

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

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