java - 如何读取GET请求查询参数中的JSON

标签 java spring rest spring-mvc spring-boot

我必须使用 GET 请求的查询参数从 URL 读取 JSON 值。 我在 Spring Boot 项目中使用最新的 Tomcat。

       @RequestMapping(
            value = "/values",
            method = RequestMethod.GET, 
            headers = HttpHeaders.ACCEPT + "=" + MediaType.APPLICATION_JSON_VALUE,
            produces = "application/json")
       public ResponseEntity<String> myMethod(
            @RequestParam(value="key") String jsonRequestString) {
       //parse JSONString 
       //--
       }

对 URL 的 GET 请求

网址:- http://localhost:port/values?key={"org":"AA","points":[{"name":"xy","Measures":"343"}]}]

抛出 java.lang.IllegalArgumentException:在请求目标中发现无效字符。有效字符在 RFC 7230 和 RFC 3986 中定义

编辑:- 以原始形式发送 JSON 会导致我无处可去,因此工作方法是以编码形式发送 JSON。

最佳答案

您可以将关键参数编码为 Base64 格式并附加到 URL,然后解码并在 Controller 方法中使用它。

关键 JSON 文本:

{"org":"AA","points":[{"name":"xy","Measures":"343"}]}] 

Base64 编码文本:

eyJvcmciOiJBQSIsInBvaW50cyI6W3sibmFtZSI6Inh5IiwiTWVhc3VyZXMiOiIzNDMifV19XQ==

再次解码为 JSON 文本:

{"org":"AA","points":[{"name":"xy","Measures":"343"}]}]

关于java - 如何读取GET请求查询参数中的JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902766/

相关文章:

java - 为什么Spring MVC会以404响应并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

Java Spring - 在运行时添加和删除过滤器

spring - Grails 3 和 LDAP 身份验证

php - 按类别过滤请求 WordPress Rest Api

java - 使用 HFileOutputFormat2 时发生 ClassCastException

java - 如何通过索引设置链表中的元素?

java - Android 应用程序正确读取字符串列,但不能正确读取第三个整数(sqlite)

java - 不会从 SharedPreferences 加载值 - 在计算中使用它们时,它们看起来是空白的

c# - 如何从 Pacer.gov API 发出案例请求?

python - 端点中的 FastAPI 冲突路径参数 - 良好实践?