Java 获取多级json值

Java 获取多级json值,java,json,object,lambda,Java,Json,Object,Lambda,在这个json中,获取对象产品的最佳方式是什么 通常,我会在json返回中创建所有对象,直到找到我想要的。但现在什么都不是直接形式 Products products = new Products(); JsonOrigin jsonOrigin = getJson(); getJson=值--> {"content": { "date": 1467045042000, "id": 228371, "volume": [ { "shipment_order_vol

在这个json中,获取对象产品的最佳方式是什么

通常,我会在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"}]
           }
         ]
}
}
我在我的产品对象中使用以下值:

[{"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
}
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());
    }
}