• JsonPropertyOrder无法为DTO对象进行属性排序


    在项目中,遇到一个问题,无论怎么设置JsonPropertyOrder,都无法正确实现排序功能,问题代码如下:

    @JsonPropertyOrder(value={"courseId","bestGrade","latestGrade","sequences"},alphabetic = true)
    public class UserLearningCourseResponseDto implements UserLearningCourseResponse {
    
        @JsonProperty("courseId")
        private String courseIdentifier;
        @JsonProperty("bestGrade")
        private float bestCourseGrade;
        @JsonProperty("latestGrade")
        private float latestCourseGrade;
        @JsonProperty("sequences")
        private List<UserLearningSequenceResponse> userLearningSequences;
     
         /*--------------------*/
         /*---  Accessors!  ---*/
         /*--------------------*/
    
        @Override
        public JSONObject asJSONObject() throws JSONException
        {
            return (new JacksonJsonMapper()).toJsonObject(this);
        }
    
        @Override
        public String getCourseId()
        {
            return courseIdentifier;
        }
    
        @Override
        public float getBestGrade()
        {
            return bestCourseGrade;
        }
    
        @Override
        public float getLatestGrade()
        {
            return latestCourseGrade;
        }
    
        @Override
        public List<UserLearningSequenceResponse> getSequences() {
            return userLearningSequences;
        }

    其实上面代码有问题的原因就在于属性值和JsonProperty未统一导致的,只需要修改成如下的即可:

    package com.rosettastone.ws.ptsws.client.dto.jackson;
    
    import com.google.common.base.Objects;
    import com.rosettastone.ws.gearz.domain.jackson.JacksonJsonMapper;
    import com.rosettastone.ws.ptsws.dto.UserLearningCourseResponse;
    import com.rosettastone.ws.ptsws.dto.UserLearningSequenceResponse;
    import org.codehaus.jackson.annotate.JsonProperty;
    import org.codehaus.jackson.annotate.JsonPropertyOrder;
    import org.codehaus.jettison.json.JSONException;
    import org.codehaus.jettison.json.JSONObject;
    
    import java.util.List;
    @JsonPropertyOrder(value={"courseId","bestGrade","latestGrade","sequences"})
    public class UserLearningCourseResponseDto implements UserLearningCourseResponse {
    
        private String type = TYPE_FIELD_VALUE;
    
        @JsonProperty("courseId")
        private String courseId;
        @JsonProperty("bestGrade")
        private float bestGrade;
        @JsonProperty("latestGrade")
        private float latestGrade;
        @JsonProperty("sequences")
        private List<UserLearningSequenceResponse> sequences;
    
        /*--------------------*/
        /*---  Accessors!  ---*/
        /*--------------------*/
    
        @Override
        public JSONObject asJSONObject() throws JSONException
        {
            return (new JacksonJsonMapper()).toJsonObject(this);
        }
    
        @Override
        public String getCourseId()
        {
            return courseId;
        }
    
        public void setCourseId(String courseId)
        {
            this.courseId = courseId;
        }
    
        @Override
        public float getBestGrade()
        {
            return bestGrade;
        }
    
        public void setBestGrade(float bestGrade)
        {
            this.bestGrade = bestGrade;
        }
    
        @Override
        public float getLatestGrade()
        {
            return latestGrade;
        }
    
        public void setLatestGrade(float latestGrade)
        {
            this.latestGrade = latestGrade;
        }
    
        @Override
        public List<UserLearningSequenceResponse> getSequences() {
            return sequences;
        }
    
        public void setSequences(List<UserLearningSequenceResponse> sequences) {
            this.sequences = sequences;
        }
    
        /*-----------------------------------------*/
        /*---  Extend the base class contract!  ---*/
        /*-----------------------------------------*/
        @Override
        public String toString()
        {
            //J-
            return Objects.toStringHelper(this).
                    add("courseIdentifier", courseId).
                    add("bestGrade", bestGrade).
                    add("latestGrade", latestGrade).
                    toString();
            //J+
        }
    }

    希望对你有用。

  • 相关阅读:
    七种常用的特征工程
    Linux发邮件
    git提交的问题
    怎么在工作中快速学习,获得晋升?——吴军得到直播实录
    曾李青总结的创业的观点
    python解析json数据
    【基础算法整理】
    【剑指offer】连续子数组的最大和
    【剑指offer】最小的K个数
    【剑指offer】数组中出现次数超过一半的数字
  • 原文地址:https://www.cnblogs.com/scy251147/p/5217867.html
Copyright © 2020-2023  润新知