在项目中,遇到一个问题,无论怎么设置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+
}
}
希望对你有用。