到HashMap类我使用杰克逊JAX-RS处理如何映射动态JSON值POJO的
json的成员始终是一样的,只有它的1名成员具有动态值..
这个充满活力值可以只能是 “” 或JSON对象
JSON可能性1
{
"event":"test",
"eventInfo": ""
}
JSON possibi lity 2
{
"event" : "test",
"eventInfo" : {
"name" : "abc",
"last" : "def"
}
}
eventInfo值只能是 “” 或JSON
我尝试这个JSON映射到MyBean.java
MyBean.java
public class MyBean{
private String event;
private Map<String, String> eventInfo = new HashMap<String, String>();
public String getEvent() {
return event;
}
public void setEvent(String event) {
this.event = event;
}
@JsonAnyGetter
public Map getEventInfo() {
return eventInfo;
}
@JsonAnySetter
public void setEventInfo(String name, String value) {
this.eventInfo.put(name, value);
}
}
的映射过程发生在MyService.java中
MyService.java
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces("text/plain")
public String receiveClientStatus(MyBean status){
if(!status.getEventInfo().isEmpty()){
String last = status.getEventInfo().get("last").toString() ;
System.err.println(last);
}
return "ok";
}
杰克逊未能转换JSON作为展示上面MyBean.java
如何做到这一点?
原谅我的英语
感谢
setEventInfo方法接受字符串值。它应该是对象吗? –
@AlexeyGavrilov我已经尝试它作为对象,但它也失败 – user3852209
MyBean看起来没问题。你如何调用receiveClientStatus?从浏览器? – skarist