我在我的web應用程序中使用spring 4.0.5.RELEASE
和jackson-databind 2.2.3
。 當發送此JSON:反序列化JSON以映射<String,String>使用傑克遜數據綁定
{"keyField1":"57579","keyField2":"sdf","someField":"sdasd","parameters":[{"parameterName":"dfgdfg","parameterValue":"sdf"},{"parameterName":"erwer","parameterValue":"sdfsdf"}]}
到控制器的所有我得到的是在瀏覽器中的HTTP 400 Bad Request
, 我沒有看到在本地WebSphere日誌中的任何錯誤,但一些測試後,我看到的問題是與反序列化的JSON數組映射到地圖。 我從來沒有進入控制器的保存方法。 嘗試了一些註釋,如@JsonDeserialize(as=HashMap.class)
沒有成功。 我該如何解決這個問題?
我POJO:
class MyClassId implements Serializable {
private static final long serialVersionUID = 5022985493208399875L;
String keyField1;
String keyField2;
}
@Entity
@IdClass(MyClassId.class)
public class MyClass {
@Id
String keyField1;
@Id
String keyField2;
String someField;
@ElementCollection
@MapKeyColumn(name="parameterName")
@Column(name="parameterValue", length=400)
Map<String, String> parameters;
... Getters and Setters ...
我的控制器:
@RestController
@RequestMapping("/myclass/**")
public class MyClassController {
@Transactional
@RequestMapping(value = "/save", method = RequestMethod.POST, consumes={"application/json"})
public @ResponseBody ServiceResponce<MyClass> save(@RequestBody MyClass processToSave) {
... Code ...
}
}
我的地圖需要只包含「dfgdfg」和「自衛隊」無「參數名稱」和「的parameterValue」,這是常量字符串。 – Osher 2015-03-02 13:04:44