json请求未在控制器中正确解析

时间:2013-10-02 09:15:18

标签: json spring spring-mvc jersey

我正在努力应该有所作为,但却没有......

我在我的控制器中有这个映射:

@RequestMapping(value = "/keys", method = RequestMethod.POST)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseEntity<Void> parseKeyList(keyList keyList) {
  return new ResponseEntity<Void>(HttpStatus.OK);
}

使用简单的类

@XmlRootElement
public class keyList {
  private String keys;
  public String getKeys() {
    return keys;
  }

  public void setKeys(String keys) {
    this.keys = keys;
  }
}

我发送这个简单的JSON帖子:

{"keys": "This is my key list"}

但我在null中获得keys

根据要求提供原始调度程序 - servlet:

   <context:component-scan base-package="com.api" />
   <!-- <mvc:resources mapping="/*" location="/WEB-INF/pages/" /> -->
   <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

1 个答案:

答案 0 :(得分:1)

您尚未将keyList参数附加到请求正文,请将方法更改为:

@RequestMapping(value = "/keys", method = RequestMethod.POST)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseEntity<Void> parseKeyList(@RequestBody keyList keyList) {
    return new ResponseEntity<Void>(HttpStatus.OK);
} 

Btw。:类keyList应该是KeyList(大K)。

还有(看chat)a

<mvc:annotation-driven/>
您的dispatcher-servlet.xml中缺少

。那是注册杰克逊映射器/ marshaller的那个。