我有以下问题。我正在使用 Hibernate 模板从我的 MySQL 数据库中读取记录列表,然后我需要修改结构,所以我是 JSONObject 和 JSONArray(使用我猜官方库: http: //www.json.org/java /)。如果我使用 List 作为服务器响应,则记录字段会正确命名(感谢使用了 @JsonProperty 注释)。但是,如果我试图用这个 List 元素创建一个 JSONObject,我的所有字段都以小写字母开头,这会破坏我的 UI。
这是我使用的“任务”模型:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name="tasks")
public class Task {
@Id
@GeneratedValue
@Column(name="Id")
private int Id;
@Column(name="Name", nullable=false)
private String Name;
@JsonProperty("Id")
public int getId() {
return Id;
}
@JsonProperty("Id")
public void setId(int id) {
this.Id = id;
}
@JsonProperty("Name")
public String getName() {
return Name;
}
@JsonProperty("Name")
public void setName(String name) {
this.Name = name;
}
}
这是用于从数据库中获取记录的代码(去掉了所有不必要的部分):
public List<Task> getEvents() {
DetachedCriteria criteria = DetachedCriteria.forClass(Task.class);
return hibernateTemplate.findByCriteria(criteria);
}
private static JSONArray read() throws JSONException{
List<Task> list = getEvents();
Iterator<Task> listIterator = list.iterator();
JSONArray ret = new JSONArray();
String parentId;
while(listIterator.hasNext()){
Task task = listIterator.next();
JSONObject taskJSON = new JSONObject(task);
ret.put(taskJSON);
}
}
正如您在我的服务器响应中看到的,所有字段名称都以小写字母开头:
{"id":18,"name":"Release"}
任何想法如何覆盖它?