2015-03-02 26 views
0

我在我的web應用程序中使用spring 4.0.5.RELEASEjackson-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 ... 
} 
} 

回答

1

我看到了兩個解決方案,您的問題:

希望它可以幫助你, 蒂埃裏

0

在JSON,parameters不是一個對象,但對象的數組:

"parameters":[{"parameterName":"dfgdfg","parameterValue":"sdf"}, ... 

不能映射這個在

Map<String, String> parameters; 

至少使用

List<Map<String, String>> parameters; 
+0

我的地圖需要只包含「dfgdfg」和「自衛隊」無「參數名稱」和「的parameterValue」,這是常量字符串。 – Osher 2015-03-02 13:04:44