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()工作正常。