Jackson api中沒有JSONObject
。您可以返回一個Map或者一個Java Bean,而不是返回一個JSONObject
,而是使用具有getter和setter的消息屬性。
public class MyMessage {
private String message;
public void setMessage(final String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
所以,你的方法將被簡化爲:
private MyMessage(String message) {
MyMessage myMessage = new MyMessage();
myMessage.setMessage(message);
return myMessage;
}
這種變化的另一個方面是改變序列化代碼,以MyMessage轉換回JSON字符串。傑克遜做Java組件,地圖默認情況下,你並不需要創建一個JSONObject
例如,
private String serializeMessage(MyMessage message){
//Note: you probably want to put it in a global converter and share the object mapper
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(message);
}
以上將返回{message: "some message"}
我跳過了異常的簡潔。
那麼'jacksonObj'會成爲我的返回對象嗎? – kasavbere
隨着所有關於傑克遜的炒作,我都希望org.codehaus.jackson比org.json更簡單。爲您的幫助投票。 – kasavbere
@kasavbere:我編輯了我的答案,以更好地反映您的原始問題。至於簡單性,這不是那麼簡單,但它取決於你想要用它做什麼。對於簡單的序列化,使用'org.json'更簡單。但是,如果您正在執行大對象序列化,並且有一些自定義需求(例如,將'Date'字段序列化爲'String'值),那麼傑克遜是迄今爲止最好的選擇。 –