Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当值包含引号时,在Spring控制器中正确解析JSON_Java_Json_Spring_Jackson_Gson - Fatal编程技术网

Java 当值包含引号时,在Spring控制器中正确解析JSON

Java 当值包含引号时,在Spring控制器中正确解析JSON,java,json,spring,jackson,gson,Java,Json,Spring,Jackson,Gson,我需要在SpringWeb服务中接收和解析一些JSON。JSON是在HTTP POST请求中发送的,我无法控制该请求的格式、头等。这是请求的一个示例: { "u": 1, "t": "token", "rental": "rental_name", "address": "rental_address", "arrive": "Monday, Jan. 1 2018", "depart": "Wednesday, Jan. 3 2018", "adults": 1, "children": 0,

我需要在SpringWeb服务中接收和解析一些JSON。JSON是在HTTP POST请求中发送的,我无法控制该请求的格式、头等。这是请求的一个示例:

{
"u": 1,
"t": "token",
"rental": "rental_name",
"address": "rental_address",
"arrive": "Monday, Jan. 1 2018",
"depart": "Wednesday, Jan. 3 2018",
"adults": 1,
"children": 0,
"guest": "guest_name",
"keys": "key location with "quotes" goes here",
"inquiry": "inquiry_id"
}
请注意,“keys”的值中有双引号

当我在Spring控制器中使用请求时,我可以理解得到以下异常,因为该值中的引号将其混淆:

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
下面是我的Spring控制器中接收POST请求的方法:

@RequestMapping(value ="/booking_new", method = RequestMethod.POST, consumes = MediaType.ALL_VALUE)
public ResponseEntity newBooking(@RequestBody Booking payload){
    //Extract values from the generated Booking object etc
}
我无法将@RequestBody作为字符串接收,而只是转义引号,因为所有引号都将转义,从而使JSON无效


有什么方法可以在请求传入时转义或删除任何值中的引号吗?

虽然我无法控制构成JSON值的变量,但我发现我确实可以控制整个POST请求的格式


因此,我最终将格式设置为XML而不是JSON,因为它更容易绕过双引号问题。

JSON没有任何问题。创建一个与此json匹配的类,并接受is作为Post请求中的参数。并且还要检查内容类型headerYes,正如前面的注释所述,错误与内容类型有关-也许您想使用MediaType.APPLICATION_JSON?它是错误的JSON
“带引号的关键位置在这里”
必须是
“带引号的关键位置在这里”
才能是正确的JSON。@pvpkiran@PillHead我创建了与JSON匹配的预订类。不幸的是,按建议更改内容类型无效。我理解。但它的来源必须是固定的,才能生成真正的JSON。否则,您不能将其视为JSON,而是将其视为文本,您需要自己将其保存。当然,这是可能的,但代码会很糟糕。