получение многоуровневого json значения - PullRequest
0 голосов
/ 30 апреля 2020

В этом json, как лучше всего получить объектные продукты.

обычно я создаю все объекты, которые у меня есть в моем json возвращении, пока не найду, что хочу. Но теперь нам нужна прямая форма.

Products products = new Products(); 

JsonOrigin jsonOrigin = getJson();

get Json () = VALUE --->

{"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"}]

1 Ответ

1 голос
/ 30 апреля 2020

Вам нужно иметь несколько 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());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...