繁体   English   中英

获取多级 json 值

[英]getting multi-level json value

在这个 json 中,获得 object 产品的最佳方式是什么。

通常我会在 json 返回中创建所有对象,直到我发现我想要。 但是现在要直接形式。

Products products = new Products(); 

JsonOrigin jsonOrigin = getJson();

getJson() = 值 --->

{"content": {

"date": 1467045042000, "id": 228371,
"volume": [

           { "shipment_order_volume_number": "1",
            "products": [{"id": 13, "sku": "CPM"},{"id": 14,"sku": "QAA"}]
           },
           { "shipment_order_volume_number": "2",
            "products": [{"id": 15, "sku": "AAA"},{"id": 16,"sku": "ABC"}]
           }
         ]
}
}

我在我的产品 object 中使用以下值:

[{"id": 13, "sku": "CPM"},{"id": 14,"sku": "QAA"}, {"id": 15, "sku": "AAA"},{"id": 16,"sku": "ABC"}]

你需要有几个 POJO

class Content {
    private long date;
    private int id;
    private List<ShipmentOrder> volume;
// getters/setters
}

class ShipmentOrder {
    @JsonProperty("shipment_order_volume_number")
    private int shipmentOrderVolumeNumber;
    private List<Product> products;
// getters/setters
}

class Product {
    private int id;
    private String sku;
// getters/setters
}

如果您需要像示例中所示的那样收集每个Content实例的所有产品,则可以实现以下方法:

class Content {
    Set<Product> getAllProducts() {
        if (null == volume) {
            return null;
        }
        return volume.stream()
                     .filter (shipment -> shipment.getProducts() != null)
                     .flatMap(shipment -> shipment.getProducts().stream())
                     .collect(Collectors.toSet());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM