2015-10-25 116 views
1

我從json模板創建了一個類http://www.jsonschema2pojo.org/,我使用Genson將我的json與基於Jersey的WS進行映射。 這是我的「JSON類」的第一行:Genson屬性閱讀錯誤

@JsonPropertyOrder({ 
    "public_key", 
    "template", 
    "signature", 
    "due_date", 
    "fulfillment_date", 
    "template_lang_code", 
    "clients_id", 
    "electronic_invoice", 
    "is_draft", 
    "recurring_time", 
    "comment", 
    "currency", 
    "items", 
    "payment_method", 
    "ts" 
}) 
public class CreateInvoiceBean { 
... 
... 

我有getter和setter方法也是在我的課了。

我創建了restfull Ws來處理帖子請求,我試圖用firefox RESTClinent插件發送jsons對象。

這是我的JSON對象的第一線,我試圖發送:

{ 
    "public_key": "7f566499549fc9e6d9cc69ca3b10d5f5", 
    "template": "billingo", 
    "signature": "9273882e8b3bc7f57e1ef3bc10041bc4bf9d835c152a1e0b810b77b3d51864ad", 
    "due_date": "2015-10-30", 
... 
...} 

我的WS後處理方法是這樣的:

@POST 
@Path("/invoice") 
@Consumes("application/json") 
@Produces("application/json") 
public String createInvoice(CreateInvoiceBean newBillingoInvoice) { 

    LOG.info("invoicenum:. " + newBillingoInvoice.getDueDate()); 

    return newBillingoInvoice.getDueDate(); 
} 

我的請求到達時,和createInvoice()方法被調用但如果我打電話newBillingoInvoice.getDueDate()它返回null,但是當我打電話newBillingoInvoice.getSignature()它返回與我發送請求json中的值..等等..如果我打電話newBillingoInvoice.getXY();返回null,如果我打電話newBillingoInvoice.getOtherSomething();回報與價值。等等。

我的問題是,怎麼會發生一個屬性是null,另一種是不相同的對象null?當我創建請求時,我設置了所有屬性,其中沒有一個是null

請幫幫我! 謝謝!

回答

1

這是由於我認爲的名字。在你的json中,我們可以看到你在單詞邊界使用下劃線的大寫字母。像due_date而不是dueDate。我想你的代碼中的屬性遵循通常的以大寫字母命名的java命令。

一個解決方案是使用@JsonProperty註釋這些設置,並獲取方法將名稱從「dueDate」更改爲「due_date」。

順便說一句生成的代碼不適用於Genson,JsonPropertyOrder不是Genson註釋。

+1

非常感謝! :)這解決了我的問題! – solarenqu