有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案