JsonPropertyOrder无法为DTO对象进行属性排序
2016-02-25 17:53
826 查看
在项目中,遇到一个问题,无论怎么设置JsonPropertyOrder,都无法正确实现排序功能,问题代码如下:
其实上面代码有问题的原因就在于属性值和JsonProperty未统一导致的,只需要修改成如下的即可:
希望对你有用。
@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+ } }
希望对你有用。
相关文章推荐
- 次讲解js中的回收机制是怎么一回事。
- js函数中参数的传递
- 20个JS优化代码技巧
- 彻底理解js中this的指向,不必硬背。
- js对数组按顺序排序
- js观察者模式简单实现
- js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop。
- Js实现AES/RSA加密
- Js随机生成指定长度字符串
- Javascript—XPATH技术解析XML
- javascript 中的arguments.callee
- JS中showModalDialog 详细使用
- 关于使用非阻塞方式下载JavaScript
- <javascript>每日小结
- el表达式里面fn的用法
- chapter 14 表单脚本
- JavaScript特效一(网页换肤、鼠标移到头像上获取个人信息getByClass)
- JavaScript定时器详解及实例
- 【js基础】javascript中关于数据类型一些知识和类型判断
- js监听输入框值的即时变化onpropertychange、oninput