Genson 属性 读取错误

Genson property read error

我使用 http://www.jsonschema2pojo.org/ 从 json 模板创建了一个 class,我使用 Genson 将我的 json 映射到基于 Jersey 的 WS。 这是我的 "json class" :

的第一行
@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 {
...
...

我的 class 中也有 getter 和 setter。

我已经创建了一个 restfull Ws 来处理 post 请求,并且我尝试使用 firefox RESTClinent 插件发送 jsons 对象。

这是我尝试发送的 json 对象的第一行:

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

我的 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() 它是 return null,但是当我调用 newBillingoInvoice.getSignature() 时它是 return使用我在请求中发送的值 json.. 依此类推.. 如果我调用 newBillingoInvoice.getXY(); returns null 并且如果我调用 newBillingoInvoice.getOtherSomething(); return 价值..等..

我的问题是,一个属性是null而另一个不是null在同一个对象中怎么可能呢?当我创建请求时,我设置了所有属性,其中没有一个是 null.

请帮帮我! 谢谢!

我觉得是因为这个名字。在您的 json 中,我们可以看到您在单词边界处使用下划线代替大写字母。喜欢 due_date 而不是 dueDate。我想您代码中的属性遵循通常的 java 大写命名约定。

一种解决方案是使用@JsonProperty 注释那些set 和get 方法以将名称从"dueDate" 更改为"due_date"。

顺便说一句,生成的代码不适用于 Genson,JsonPropertyOrder 不是 Genson 注释。