zoukankan      html  css  js  c++  java
  • 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+
        }
    }

    希望对你有用。

  • 相关阅读:
    在小米 三星 索尼 手机 :图标上显示数字
    HDU 1873 看病要排队
    简单的WINFORM窗口,体验WINFORM带来的快感
    java初探秘之推断输入的一串字符是否全为小写字母
    【Android 面试基础知识点整理】
    互联网+时代IT管理者的转型
    hdu 1233 还是畅通project (克鲁斯卡尔裸题)
    经验之谈—让你看明确block
    字典树
    设计模式之问题集锦(一)
  • 原文地址:https://www.cnblogs.com/scy251147/p/5217867.html
Copyright © 2011-2022 走看看