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 注释。
我使用 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 注释。