在项目中,遇到一个问题,无论怎么设置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+
}
}

希望对你有用。

JsonPropertyOrder无法为DTO对象进行属性排序的更多相关文章

  1. java 对list中对象按属性排序

    实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...

  2. C#对象内部属性排序测试

    构建对象: class SortGrid { int indexI; int indexJ; public SortGrid(int x, int y) { indexI = x; indexJ = ...

  3. List集合中的对象根据属性排序

    集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A.B.C,则取得时候,则也是A.B.C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看 ...

  4. JS中对象按属性排序(冒泡排序)

    在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...

  5. java list中的对象,按对象某属性排序

    1:对象类 需要 实现: public class TreeNode extends BaseBean implements Comparable <TreeNode> { private ...

  6. java根据list中的对象某个属性排序

    1. Collections.sort public class Test { public static void main(String[] args) throws Exception { Ci ...

  7. Java对象根据属性排序

    参考:https://blog.csdn.net/wangtaocsdn/article/details/71500500

  8. DataTable与DTO对象的简易转换类

    在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...

  9. java DTO对象与PO对象的相互转换

    2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...

随机推荐

  1. 【JavaScript】浅析javaScript和HTML与unicode字符集的关系

    目录结构: // contents structure [-] javaScript和HTML的字符集 javaScript和HTML如何表现unicode字符集 参考文章 javaScript和HT ...

  2. 【Swift】TTTAttributedLabel使用小记

    前言 TTTAttributedLabel继承自UILabel,很方便基于现有代码进行修改,Star超过4K+,今天用了一下作点笔记. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http: ...

  3. Android Material Design 兼容库的使用

    Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客: ...

  4. mac osx install mysql

    (1) download mysql dmg (2) install (3) /usr/local/mysql/bin/mysql -u root -p change password

  5. 在Mac电脑上为iPhone或iPad录屏的方法

    在以前的Mac和iOS版本下,录制iPhone或者iPad屏幕操作是一件稍微复杂的事情.但是随着Yosemite的出现,在Mac电脑上为iPhone或iPad录屏的方法就变得简单了.下面就介绍一下具体 ...

  6. 准备CLR源码阅读环境

    微软发布了CLR 2.0的源码,这个源码是可以直接在freebsd和windows环境下编译及运行的,请在微软shared source cli(http://www.microsoft.com/en ...

  7. .net 已知图片的网络路径,通过浏览器下载图片

    没什么技术含量,主要留给自己查找方便: 如题,知道图片的完整网络路径的情况下,在浏览器中下载图片的实现: 下面这个方法实现的是把图片读取为byte数组: private byte[] GetImage ...

  8. Linux命令学习总结:cp命令

    命令简介: cp命令用来复制文件或目录.指令英文原义:copy 指令所在路径:/bin/cp 命令语法: Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [ ...

  9. EasyUI 中点击取消按钮关闭Dialog(对话框窗口)

    <div id="dl1" class="easyui-dialog" title="窗口"style="width:400 ...

  10. 设计模式C#实现(十六)——中介者模式

    意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. 适用 ...