2015-10-25 5 views
1

Я создал класс из шаблона json с http://www.jsonschema2pojo.org/, и я использую Genson для сопоставления моего json с 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 { 
... 
... 

У меня есть геттеры и сеттеры также в моем классе тоже.

Я создал restfull Ws для обработки почтовых запросов, и я попытался отправить объект jsons с плагином firefox RESTClinent.

Это первые строки моего объекта JSON, что я пытался отправить:

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

My WS Post метод обработчика выглядит следующим образом:

@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».

BTW сгенерированный код не для Genson, JsonPropertyOrder не является аннотацией Genson.

+1

спасибо! :) Это решило мою проблему! – solarenqu

 Смежные вопросы

  • Нет связанных вопросов^_^