簡體   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