我使用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
。
请帮帮我! 谢谢!
答案 0 :(得分:1)
这是由于我想的名字。在你的json中,我们可以看到你在字边界处使用了大写下划线的大写字母。像due_date而不是dueDate。我想你的代码中的属性遵循通常的java命名对流大写。
一种解决方案是使用@JsonProperty注释那些set和get方法来改变名称来自" dueDate"到" due_date"。
BTW生成的代码不适用于Genson,JsonPropertyOrder不是Genson注释。