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作扩展(字段 ...
随机推荐
- jquery弹出下拉列表插件(实现kindeditor的@功能)
这几天有个工作需求,就是在富文本输入区域(kindeditor)可以有@功能,能够容易提示用户名的(像在qq群组@人一样).在网上找了一个叫bootstrap-suggest的插件,却不能满足我的需求 ...
- javascript 函数初探 (一)--- 神马是函数
神马是函数? 所谓函数,本质上是一种代码的分组形式.我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用.下面,我们来示范以下函数的声明: function sum(a, b){ var c = ...
- UIPickerView的使用(一)
简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...
- 委托的N种写法,你喜欢哪种?
一.委托调用方式 1. 最原始版本: delegate string PlusStringHandle(string x, string y); class Program { static void ...
- 隐藏tabbar的属性hidesBottomBarWhenPushed
项目中有需求是A视图控制器push之后B视图控制器需要隐藏底部的tabbar,在pop之后A视图控制器仍然显示tabbar. 其实不需要在push操作时敲 self.hidesBottomBarWhe ...
- SCRIPT5011:不能执行已释放Script的代码
环境:win7 64位 IE9 错误:SCRIPT5011:不能执行已释放Script的代码. 现象:在父窗体的close()中调用嵌套的iframe页面的js方法返回一个对象时抛此异常. 原因:在一 ...
- initialize和init以及load方法的区别与使用以及什么时候调用
initialize不是init initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方 ...
- 进新公司用cornerstone-checkout后遇到的奇葩bug,及解决方法
从cornerstone中checkout下新的工程,运行报错. 1.开始错误原因是找不到相对应的某个.m文件的路径 解决方案:将缺少的.m文件重新从项目文件夹中导入 2.后来显示 造成的原因是在下面 ...
- Android framework编译出来的jar包classes.jar的位置
在源码环境下编译 Android framework编译出来的jar包classes.jar的位置 out/target/common/obj/JAVA_LIBRARIES/framework_in ...
- Vs2013 html5开发WP8.1 APP之jquery
仿安卓原生界面,先使用JQM,最新的JQM使用了JQ1.8.5 然后在WP8以上就会遇到动态创建控件的安全性问题 换成JQ2.X即可,但在WP8.1中一定不要删除了 <script src=&q ...