随笔 - 394  文章 - 0  评论 - 946  阅读 - 143万 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@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未统一导致的,只需要修改成如下的即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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+
    }
}

希望对你有用。

posted on   程序诗人  阅读(4247)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2014-02-25 构建基于WCF Restful Service的服务
点击右上角即可分享
微信分享提示