我正在使用 Google HTTP 库来解析从 get 请求接收到的 JSON 数据,但现在发生的奇怪事情是,对于我的 @Keys 之一,作为 JSON 出现的值为 null(hasShipmentBeenPulled):
{
"orderNo": 19.000,
...
"customFields": {
"hasShipmentBeenPulled": null,
"service": null
}
}
但是当库解析值时,它默认为“真”。这是课程:
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吗?我在过去 2 小时内阅读的所有内容都表明空值应该默认为 false,或者理想情况下,我希望它保持为空值。
PS 下面是使魔术发生的代码:
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 或完全忽略。我不确定使用这个库处理该功能的最佳方式。到目前为止,我一直没有成功。
谢谢。