2015-10-28 124 views
4

我目前正在從RestExpress Rest服務遷移到Jersey框架,我必須具有與RestExpress相同的輸出。如何將Java對象轉換爲Json格式屬性名稱

public class AnnouncementDTO { 

    private String id; 
    private String title; 
    private String details; 
    private String postedBy; 

    private String permanent; 
    private String dismissible; 

    private String startDate; 
    private String endDate; 

} 

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); 
String json = ow.writeValueAsString(announcementDTO); 

輸出:

{ 
    "id" : null, 
    "title" : "<font size=\"3\" color=\"red\">This is some text!</font>", 
    "details" : "<p>fhmdhd</p>", 
    "postedBy" : "Portal, Administrator", 
    "permanent" : null, 
    "dismissible" : null, 
    "startDate" : "Jul 19, 2014, 04:44 AM IST", 
    "endDate" : null, 
    "read" : null 
} 

我的要求是格式postedBy屬性名稱爲posted_by。所以預期的結果如下。

{ 
    "title":"<font size=\"3\" color=\"red\">This is some text!</font>", 
    "details":"<p>fhmdhd</p>", 
    "posted_by":"Portal, Administrator", 
    "start_date":"Jul 19, 2014, 04:44 AM ET" 
} 

回答

2
@JsonProperty("posted_by") 
private String postedBy; 
+0

感謝這是工作。但我正在尋找更通用的解決方案,因爲我有幾個DTO對象 –

0

我覺得你可以註解像

@XmlElement(name="posted_by") 
private String postedBy; 
+0

謝謝你的工作。但我正在尋找更通用的解決方案,因爲我有幾個DTO對象 –

0

有兩種方法可以做到這一點 第一個是從這裏

下載JAR並添加到您的類路徑http://mvnrepository.com/artifact/com.google.code.gson/gson/2.3.1 ,然後導入com.google.gson.Gson;

Gson gson=new Gson(); 
String s=gson.toJson(Your object); 

s是你的json字符串。

和另一種方式是 這種方法,你將有getter和setter方法添加到您的模型類

import com.google.gson.JsonObject; 

JsonObject jsonObject=new JsonObject(); 
jsonObject.addProperty("propertyname",announcementDTO.gettermethod1()); 
jsonObject.addProperty("propertyname",announcementDTO.gettermethod2()); 
String s =jsonObject.toString(); 

下面就將會是您最終的jsonised字符串。

快樂編碼!

+0

謝謝你的工作。但我正在尋找更通用的解決方案,因爲我有幾個DTO對象 –

+0

接受答案。 –

相關問題