我必须使用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
//--
}
GET请求到网址
网址: - http:// localhost:port/values?key={"org":"AA","points":[{"name":"xy","Measures":"343"}]}]
抛出 java.lang.IllegalArgumentException :在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
编辑: - 以原始形式发送JSON导致我无处可去,因此工作方法是以编码形式发送JSON。
答案 0 :(得分:2)
你可以将关键参数编码为Base64格式并附加到url然后解码并在你的控制器方法中使用它。
关键的json文字 {“org”:“AA”,“points”:[{“name”:“xy”,“Measures”:“343”}}}]
基础64位编码文本 eyJvcmciOiJBQSIsInBvaW50cyI6W3sibmFtZSI6Inh5IiwiTWVhc3VyZXMiOiIzNDMifV19XQ ==
再次解码为json文本 { “组织”: “AA”, “点”:[{ “名称”: “XY”, “对策”: “343”}]}]
答案 1 :(得分:0)
您可以直接将String传递给JSONObject构造函数
有很多图书馆可用。
1。http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm(JSON jar)
2. http://www.java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm(简单JSON)
3. http://www.java2s.com/Code/Jar/g/Downloadgson224sourcesjar.htm(谷歌的GSON)
我个人使用JSON和GSON罐子。
JSONObject jsonObject = new JSONObject(variable)
答案 2 :(得分:0)
你应该照顾好几件事。
创建一个JAVA pojo类,它应该与您的JSON具有相同的结构。喜欢以下JSON,
{
"id": 123,
"status": "Ordered",
"product": "Pepsi"
}
我会创建一个类(你可以创建一个两个单独的类,因为你在json中有数组),
公共类订单{
private long id ;
private String status;
private String product ;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
}
然后,
@RequestMapping(value = "/values", method = RequestMethod.POST,produces={"application/json"},
consumes={"application/json"})
public ResponseEntity myMethod(
@RequestBody Order orderObj) {
}
请参考此示例并构建解决方案。
答案 3 :(得分:0)
你可以尝试这样的事情
@GetMapping(value = "/values", produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<String> testMethod(@RequestParam("key") String key) throws Exception {
JSONObject jsonObject = new JSONObject(key);
//
}