如何使用XML注释为给定的JSON生成POJO

我需要为给定的JSON文件生成POJO,然后将JSON值注入POJO。我必须按照JSON文件中指定的顺序将其转换为XML。 示例:

{
  "Body": {
    "Request": {
      "appId": "Admin","deviceId": "8DFAF95202C247A98315F2EE037B3375","clientNonce": "116","requestKey": "","async": "false","source": "APPZILLON","screenId": "LandingPage","userId": "","requestId": "CsnONCE","os": "WEB","sessionId": "","origination": "error","status": "true","node1":{
        "element1":"element1 value","node2":{
          "element2":"element2 value"
        }
      }
    }
  }
}

我已经给出了上述JSON,我已经使用了 jsonSchema2POJO 并生成了POJO,如下所示:

package com.convert;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "Body"
})
public class Input {

    /**
     * 
     * (Can be null)
     * 
     */
    @Nullable
    @JsonProperty("Body")
    @Valid
    private Body body;
    @JsonIgnore
    @Valid
    private Map<String,Object> additionalProperties = new HashMap<String,Object>();

    @JsonProperty("Body")
    public Body getBody() {
        return body;
    }

    @JsonProperty("Body")
    public void setBody(Body body) {
        this.body = body;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

    @JsonAnyGetter
    public Map<String,Object> getadditionalProperties() {
        return this.additionalProperties;
    }

    @JsonAnySetter
    public void setadditionalProperty(String name,Object value) {
        this.additionalProperties.put(name,value);
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(body).append(additionalProperties).toHashCode();
    }

    @Override
    public boolean equals(Object other) {
        if (other == this) {
            return true;
        }
        if ((other instanceof Input) == false) {
            return false;
        }
        Input rhs = ((Input) other);
        return new EqualsBuilder().append(body,rhs.body).append(additionalProperties,rhs.additionalProperties).isEquals();
    }

}

和以下子类:

package com.convert;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "Request"
})
public class Body {

    /**
     * 
     * (Can be null)
     * 
     */
    @Nullable
    @JsonProperty("Request")
    @Valid
    private Request request;
    @JsonIgnore
    @Valid
    private Map<String,Object>();

    @JsonProperty("Request")
    public Request getRequest() {
        return request;
    }

    @JsonProperty("Request")
    public void setRequest(Request request) {
        this.request = request;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

    @JsonAnyGetter
    public Map<String,value);
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(request).append(additionalProperties).toHashCode();
    }

    @Override
    public boolean equals(Object other) {
        if (other == this) {
            return true;
        }
        if ((other instanceof Body) == false) {
            return false;
        }
        Body rhs = ((Body) other);
        return new EqualsBuilder().append(request,rhs.request).append(additionalProperties,rhs.additionalProperties).isEquals();
    }

}

像这样的孩子,带有所有JSON相关注释

    package com.convert;

    import java.util.HashMap;
    import java.util.Map;
    import javax.annotation.Nullable;
    import javax.validation.Valid;
    import com.fasterxml.jackson.annotation.JsonAnyGetter;
    import com.fasterxml.jackson.annotation.JsonAnySetter;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.annotation.JsonProperty;
    import com.fasterxml.jackson.annotation.JsonPropertyOrder;
    import org.apache.commons.lang.builder.EqualsBuilder;
    import org.apache.commons.lang.builder.HashCodeBuilder;
    import org.apache.commons.lang.builder.ToStringBuilder;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonPropertyOrder({
        "appId","deviceId","clientNonce","requestKey","async","source","screenId","userId","requestId","os","sessionId","origination","status","node1"
    })
    public class Request {

        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("appId")
        private String appId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("deviceId")
        private String deviceId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("clientNonce")
        private String clientNonce;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("requestKey")
        private String requestKey;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("async")
        private String async;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("source")
        private String source;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("screenId")
        private String screenId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("userId")
        private String userId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("requestId")
        private String requestId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("os")
        private String os;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("sessionId")
        private String sessionId;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("origination")
        private String origination;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("status")
        private String status;
        /**
         * 
         * (Can be null)
         * 
         */
        @Nullable
        @JsonProperty("node1")
        @Valid
        private Node1 node1;
        @JsonIgnore
        @Valid
        private Map<String,Object>();

        @JsonProperty("appId")
        public String getappId() {
            return appId;
        }

        @JsonProperty("appId")
        public void setappId(String appId) {
            this.appId = appId;
        }

        @JsonProperty("deviceId")
        public String getDeviceId() {
            return deviceId;
        }

        @JsonProperty("deviceId")
        public void setDeviceId(String deviceId) {
            this.deviceId = deviceId;
        }

        @JsonProperty("clientNonce")
        public String getclientNonce() {
            return clientNonce;
        }

        @JsonProperty("clientNonce")
        public void setClientNonce(String clientNonce) {
            this.clientNonce = clientNonce;
        }

        @JsonProperty("requestKey")
        public String getRequestKey() {
            return requestKey;
        }

        @JsonProperty("requestKey")
        public void setRequestKey(String requestKey) {
            this.requestKey = requestKey;
        }

        @JsonProperty("async")
        public String getasync() {
            return async;
        }

        @JsonProperty("async")
        public void setasync(String async) {
            this.async = async;
        }

        @JsonProperty("source")
        public String getsource() {
            return source;
        }

        @JsonProperty("source")
        public void setsource(String source) {
            this.source = source;
        }

        @JsonProperty("screenId")
        public String getScreenId() {
            return screenId;
        }

        @JsonProperty("screenId")
        public void setScreenId(String screenId) {
            this.screenId = screenId;
        }

        @JsonProperty("userId")
        public String getUserId() {
            return userId;
        }

        @JsonProperty("userId")
        public void setUserId(String userId) {
            this.userId = userId;
        }

        @JsonProperty("requestId")
        public String getRequestId() {
            return requestId;
        }

        @JsonProperty("requestId")
        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        @JsonProperty("os")
        public String getOs() {
            return os;
        }

        @JsonProperty("os")
        public void setOs(String os) {
            this.os = os;
        }

        @JsonProperty("sessionId")
        public String getSessionId() {
            return sessionId;
        }

        @JsonProperty("sessionId")
        public void setSessionId(String sessionId) {
            this.sessionId = sessionId;
        }

        @JsonProperty("origination")
        public String getOrigination() {
            return origination;
        }

        @JsonProperty("origination")
        public void setOrigination(String origination) {
            this.origination = origination;
        }

        @JsonProperty("status")
        public String getStatus() {
            return status;
        }

        @JsonProperty("status")
        public void setStatus(String status) {
            this.status = status;
        }

        @JsonProperty("node1")
        public Node1 getNode1() {
            return node1;
        }

        @JsonProperty("node1")
        public void setNode1(Node1 node1) {
            this.node1 = node1;
        }

        @Override
        public String toString() {
            return ToStringBuilder.reflectionToString(this);
        }

        @JsonAnyGetter
        public Map<String,Object> getadditionalProperties() {
            return this.additionalProperties;
        }

        @JsonAnySetter
        public void setadditionalProperty(String name,Object value) {
            this.additionalProperties.put(name,value);
        }

        @Override
        public int hashCode() {
            return new HashCodeBuilder().append(appId).append(deviceId).append(clientNonce).append(requestKey).append(async).append(source).append(screenId).append(userId).append(requestId).append(os).append(sessionId).append(origination).append(status).append(node1).append(additionalProperties).toHashCode();
        }

        @Override
        public boolean equals(Object other) {
            if (other == this) {
                return true;
            }
            if ((other instanceof Request) == false) {
                return false;
            }
            Request rhs = ((Request) other);
            return new EqualsBuilder().append(appId,rhs.appId).append(deviceId,rhs.deviceId).append(clientNonce,rhs.clientNonce).append(requestKey,rhs.requestKey).append(async,rhs.async).append(source,rhs.source).append(screenId,rhs.screenId).append(userId,rhs.userId).append(requestId,rhs.requestId).append(os,rhs.os).append(sessionId,rhs.sessionId).append(origination,rhs.origination).append(status,rhs.status).append(node1,rhs.node1).append(additionalProperties,rhs.additionalProperties).isEquals();
        }

}

当我从上述Java Bean生成Xml时,它没有顺序

@JsonPropertyOrder({
            "appId","node1"
        })

如果我将 @JsonPropertyOrder(= 替换为 @XmlType(propOrder = ),那么它将按顺序出现。请告诉我,如何实现此目标,还建议还有其他方法可以做。

zhang9987 回答:如何使用XML注释为给定的JSON生成POJO

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3030277.html

大家都在问