[英]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
請求,還是忽略了對象本身的返回; 想測試並確保沒有其他問題。 在最佳實踐的努力下,它應該只返回正確的HttpStatus
(如果我錯了,請隨時糾正我)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.