Java 一些字符(如括号)在Spring@RequestBody中编码。如何解码? 让我们来考虑这个代码片段: @ResponseBody @RequestMapping(value = "/getFiltered", method = RequestMethod.POST) public ResponseEntity<OraPhysicalGoodMiniDataWrapper> getFilteredProducts(@RequestBody OraSalesOfGoodsFilters filters) { return oraProductListController.getFilteredProducts(filters); } @ResponseBody @RequestMapping(value=“/getFiltered”,method=RequestMethod.POST) 公共响应getFilteredProducts(@RequestBody或SalesOfGoodFilters过滤器){ 返回oraProductListController.getFilteredProducts(过滤器); }
Java 一些字符(如括号)在Spring@RequestBody中编码。如何解码? 让我们来考虑这个代码片段: @ResponseBody @RequestMapping(value = "/getFiltered", method = RequestMethod.POST) public ResponseEntity<OraPhysicalGoodMiniDataWrapper> getFilteredProducts(@RequestBody OraSalesOfGoodsFilters filters) { return oraProductListController.getFilteredProducts(filters); } @ResponseBody @RequestMapping(value=“/getFiltered”,method=RequestMethod.POST) 公共响应getFilteredProducts(@RequestBody或SalesOfGoodFilters过滤器){ 返回oraProductListController.getFilteredProducts(过滤器); },java,json,spring,character-encoding,Java,Json,Spring,Character Encoding,filters参数具有名为searchValue的字符串 问题是:当我在json中传递例如searchValue:“(2016)”时,Spring控制器接收searchValue=&40;2016)。 我试图用Java URL解码器对其进行解码,但没有成功 我的问题是: 是否有任何Java方法可以解码字符串中的所有这些字符?或者我应该写我自己的方法吗?这是你的问题解决方案。使用javascript或spring设置 Javascript var param = { "search
filters
参数具有名为searchValue
的字符串
问题是:当我在json中传递例如searchValue:“(2016)”
时,Spring控制器接收searchValue=&40;2016)代码>。
我试图用Java URL解码器对其进行解码,但没有成功
我的问题是:
是否有任何Java方法可以解码字符串中的所有这些字符?或者我应该写我自己的方法吗?这是你的问题解决方案。使用javascript或spring设置
Javascript
var param = {
"searchValue": "(2016)"
};
$.ajax({
type: 'POST',
dataType: 'JSON',
data: JSON.stringify(param),
contentType:"application/json; charset=UTF-8",
url: '/test/filter',
error: function() {
// error
},
success: function(returnJSON) {
// success
}
}):
弹簧设置
Pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.0.4</version>
</dependency>
com.fasterxml.jackson.core
杰克逊核心
2.0.4
com.fasterxml.jackson.core
杰克逊注释
2.0.4
com.fasterxml.jackson.core
杰克逊数据绑定
2.0.4
servlet.xml
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
text/html;字符集=UTF-8
应用程序/json;字符集=UTF-8
如中所述,StringEscapeUtils.unescapeXml(字符串值)
方法被证明是有用的
我们有点担心它是unescapeXml()
,而不是unescapeJavaScript()
(这不起作用),因为我在前端从JavaScript以JSON(不是XML)的形式传递值,但我很高兴它能起作用。Apache公共文本:StringEscapeUtils unescaping,或java 9:s=s.replaceAll(\\\&&([xX]?\\d+)”),m->new String(new int[]{Integer.decode(“0”+m.group(1))},0,1))代码>谢谢@JoopEggen。StringEscapeUtils中的方法unescapeXml()工作正常。