Genson属性读取错误

时间:2015-10-25 17:38:18

标签: java json web-services genson

我使用http://www.jsonschema2pojo.org/从json模板创建了一个类,我使用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 {
...
...

我的班上也有吸气鬼和二传手。

我创建了一个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()它会返回null,但是当我致电newBillingoInvoice.getSignature()时,它会返回我在请求json中发送的值..依此类推..如果我致电newBillingoInvoice.getXY();,则返回null,如果我致电newBillingoInvoice.getOtherSomething();,则返回值为..等等。

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

请帮帮我! 谢谢!

1 个答案:

答案 0 :(得分:1)

这是由于我想的名字。在你的json中,我们可以看到你在字边界处使用了大写下划线的大写字母。像due_date而不是dueDate。我想你的代码中的属性遵循通常的java命名对流大写。

一种解决方案是使用@JsonProperty注释那些set和get方法来改变名称来自" dueDate"到" due_date"。

BTW生成的代码不适用于Genson,JsonPropertyOrder不是Genson注释。