java Google HTTP库JSON解析,空值默认为True
我正在使用Google HTTP库解析从get请求接收到的JSON数据,但现在发生的奇怪事情是,对于我的一个@key,JSON值为null(hashipmentbeenpulled):
{
"orderNo": 19.000,
...
"customFields": {
"hasShipmentBeenPulled": null,
"service": null
}
}
但当库解析出该值时,它默认为“true”。下面是课程:
public class CustomFields {
@Key
private Boolean hasShipmentBeenPulled;
@Key
private String service;
public Boolean getHasShipmentBeenPulled() {
return hasShipmentBeenPulled;
}
public void setHasShipmentBeenPulled(Boolean hasShipmentBeenPulled) {
this.hasShipmentBeenPulled = hasShipmentBeenPulled;
}
public String getService() {
return service;
}
public void setService(String service) {
this.service = service;
}
}
以下是输出:
OrderNo: 19
UseOrderNoRoot: 0
hasShipmentBeenPulled: true
为什么会这样?这不应该默认为false吗?我在过去两个小时里读到的所有内容都指出了这样一个事实:空值应该默认为false,或者理想情况下,我更希望它保持为空值
下面是使魔法发生的代码:
HttpRequest request = requestFactory.buildGetRequest(url).setHeaders(getHeaders());
Type type = new TypeToken<List<Order>>() {}.getType();
List<Order> orders = (List<Order>) request.execute().parseAs(type);
for(Order order : orders) {
System.out.println("OrderNo: " + order.getOrderNo());
System.out.println("UseOrderNoRoot: " + order.getUseOrderNoRoot());
System.out.println("hasShipmentBeenPulled: " + order.getCustomFields().getHasShipmentBeenPulled());
最终,我要完成的是解析JSON,如果JSON中的值设置为null,我希望Java对象也设置为null。我有一些必填字段将始终传入,但还有其他字段是可选的。如果该字段是可选的,我仍然希望在传递时收集该信息,但如果不是,则可以将其保留为null或完全忽略。我不确定使用此库处理该功能的最佳方法。到目前为止,我一直不成功
谢谢
共 (0) 个答案