Jackson解析XML/JSONシーケンス化と逆シーケンス化(注記ベース)

3810 ワード

インポートするjarパッケージ

      com.fasterxml.jackson.core
      jackson-core
      2.8.11
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.8.11
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      2.8.11
    
    
      com.fasterxml.jackson.dataformat
      jackson-dataformat-xml
      2.8.11
    

POJO類
@JacksonXmlRootElement(localName = "xml")
public class BaseEvent {
    @JacksonXmlProperty(localName = "ToUserName")
    private String ToUserName;//       

    @JacksonXmlProperty(localName = "FromUserName")
    private String FromUserName;//      (  OpenID)

    @JacksonXmlProperty(localName = "Content")
    private String Content;

    @JacksonXmlProperty(localName = "CreateTime")
    private long CreateTime;//        (  )

    @JacksonXmlProperty(localName = "MsgType")
    private String MsgType;//     ,event

    @JacksonXmlProperty(localName = "MsgId")
    private String MsgId;

    public String getToUserName() {
        return ToUserName;
    }

    public void setToUserName(String toUserName) {
        ToUserName = toUserName;
    }

    public String getFromUserName() {
        return FromUserName;
    }

    public void setFromUserName(String fromUserName) {
        FromUserName = fromUserName;
    }

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    public long getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(long createTime) {
        CreateTime = createTime;
    }

    public String getMsgType() {
        return MsgType;
    }

    public void setMsgType(String msgType) {
        MsgType = msgType;
    }

    public String getMsgId() {
        return MsgId;
    }

    public void setMsgId(String msgId) {
        MsgId = msgId;
    }

    @Override
    public String toString() {
        return "BaseEvent{" +
                "ToUserName='" + ToUserName + '\'' +
                ", FromUserName='" + FromUserName + '\'' +
                ", Content='" + Content + '\'' +
                ", CreateTime=" + CreateTime +
                ", MsgType='" + MsgType + '\'' +
                '}';
    }
}

シーケンス化/逆シーケンス化
//         
    @RequestMapping(value = "/wx", method = RequestMethod.POST, produces = MediaType.APPLICATION_XML_VALUE)
    @ResponseBody
    public String messageService(HttpServletRequest request) throws IOException {

        char[] buf = new char[1024];
        int length;
        StringBuilder builder = new StringBuilder();
        InputStreamReader inputStreamReader = new InputStreamReader(request.getInputStream(), "utf-8");
        while ((length = inputStreamReader.read(buf)) != -1) {
            builder.append(new String(buf, 0, length));
        }

        inputStreamReader.close();

        System.out.println(builder);


        XmlMapper xmlMapper = new XmlMapper();
        //  pojo       
        xmlMapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,true);
        BaseEvent baseEvent = xmlMapper.readValue(builder.toString(),BaseEvent.class);

        System.out.println(baseEvent);

        return "";
    }