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+
}
}
希望对你有用。
JsonPropertyOrder无法为DTO对象进行属性排序的更多相关文章
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- C#对象内部属性排序测试
构建对象: class SortGrid { int indexI; int indexJ; public SortGrid(int x, int y) { indexI = x; indexJ = ...
- List集合中的对象根据属性排序
集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A.B.C,则取得时候,则也是A.B.C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看 ...
- JS中对象按属性排序(冒泡排序)
在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...
- java list中的对象,按对象某属性排序
1:对象类 需要 实现: public class TreeNode extends BaseBean implements Comparable <TreeNode> { private ...
- java根据list中的对象某个属性排序
1. Collections.sort public class Test { public static void main(String[] args) throws Exception { Ci ...
- Java对象根据属性排序
参考:https://blog.csdn.net/wangtaocsdn/article/details/71500500
- DataTable与DTO对象的简易转换类
在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...
- java DTO对象与PO对象的相互转换
2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...
随机推荐
- [转载]C#中as和is关键字的用法
这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments 在程序中,进 ...
- 使用javascript生成的植物显示过程特效
查看效果:http://keleyi.com/keleyi/phtml/html5/33.htm .NET版本:http://keleyi.com/a/bjac/66mql4bc.htm 完整HTML ...
- HTML5移动端图片左右切换动画
插件描述:HTML5移动端图片左右切换动画 小海今天要给大家分享一款很不错的图片左右切换焦点图动画,并且支持移动端触摸滑动.功能上,这款HTML5图片播放器支持鼠标滑动.手机端触摸滑动以及自动播放.外 ...
- CSS3动画属性Transform解读
无论你是前端还是设计师,相信你在网页二维空间上的操作早已经得心应手,JS处理时间线的动画也早已经 烂熟于胸.从今天开始,我跟大家分享一些“新”的东西,网页的第三个维度,以及纯CSS实现的动画.限于篇幅 ...
- sublime快捷键
以下是个人总结不完全的快捷键总汇,祝愿各位顺利解放自己的鼠标. 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同 ...
- 实现UITextView的placeholder
我们知道在iOS开发时,控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UI ...
- HDFS --访问
Hdfs的访问方式有两种,第一:类似linux命令,hadoop shell.第二:java API方式. 先看第一种. FS Shell cat chgrp chmod chown copyFrom ...
- windows下安装nginx
说起开发,自己感到非常惭愧,由于公司让我给<绿电侠>项目写整体架构解决方案,才开始接触nginx这个东东,突然觉得它是一把非常好的利器. 本文主要记录在windows下安装nginx,另参 ...
- ORA-01102: cannot mount database in EXCLUSIVE mode
安装完ORACEL 10g数据库后,启动数据库时遇到ORA-01102: cannot mount database in EXCLUSIVE mode [oracle@DB-Server ~]$ s ...
- C、C++: 引用、指针、实例、内存模型、namespace
// HelloWorld.cpp : Defines the entry point for the console application. // #include "stdafx.h& ...