在项目中,遇到一个问题,无论怎么设置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. 大公司c#&.net转型java的原因有哪些?

    历来就听说有编程语言“鄙视链”的说法,而如今月经贴上的那些事儿,还真让我给遇到了. 以下内容来自知乎,纯属扯淡,易引发口水战,看完勿人身攻击. 目的给盲目的公司决策者.开发人员科普下,有个客观清醒的认 ...

  2. javascript创建对象的几种模式

    在js中有几种模式可以创建对象,通过对象操作所包含的属性与方法. 一般来说,构造函数名称的第一个字母为大写字母,非构造函数名称的第一个字母为小写字母,当然,构造函数与一般函数唯一的区别只是调用的方式不 ...

  3. 基于WebGL的三维地形渲染

    1.生成WebMap页面 #!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess from jinja2 import Envi ...

  4. AngularJS 参考手册

    AngularJS 参考手册 AngularJS 指令 本教程用到的 AngularJS 指令 : 指令 描述 ng-app 定义应用程序的根元素. ng-bind 绑定 HTML 元素到应用程序数据 ...

  5. VMware VirtualBox共存时桥接注意

    今天在VMware必须桥接的一个虚拟机上需要连接其他机器时,遇到总是连接不到的情况. 具体现象: HOST机器可以ping A机器 VMWare Guest机器无法ping A机器,也无法ping H ...

  6. Android 手机卫士--设置密码对话框

    本文实现初次设置密码验证过程,首先实现如下效果 本文地址:http://www.cnblogs.com/wuyudong/p/5939823.html,转载请注明出处. 布局如下: <?xml ...

  7. iOS FFmpeg 优秀博客(资源)集锦

    iOS FFmpeg 优秀博客(资源)集锦 这篇博客没有我自己写的内容: 主要是对FFmpeg一些优秀博客的记录 随时更新 1>iOS编译FFmpeg,kxmovie实现视频播放 2>视音 ...

  8. .Net Collection的一些理解——记录一次向实习生的答疑

    公司最近进了个实习生,每天下班前我都会花一些时间来解答一下实习生的一些疑问.今天问起了关于集合排序方法Sort的一些疑问,这让我一下回到自己刚刚入行的时候.那个时候也遇到了集合排序的问题,为发现接口I ...

  9. ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []

    我们生产服务器中的一个数据库发出监控告警日志的邮件,内容如下所示,在31号09:11分出现了大名鼎鼎的ORA-00600错误. Dear All: The Instance xxx' alert lo ...

  10. Python 常用模块之time&datetime 和random

    本节大纲: 模块介绍 time &datetime模块 random 一.模块介绍: 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他 ...