Я пытаюсь проверить массив объектов json, размер которых является динамическим, с помощью схемы avro в apache Nifi. Я понимаю, что если размер известен, мы можем написать схему для проверки. Есть ли способ проверить, даже если размер динамический.

Запись Json выглядит следующим образом

"multi_location" : [
        {
            "cityState" : "Seattle, Washington", 
            "country" : "United States", 
            "city" : "Seattle", 
            "location" : "Seattle, Washington, United States", 
            "cityCountry" : "Seattle, United States", 
            "cityStateCountry" : "Seattle, Washington, United States", 
            "state" : "Washington", 
            "mapQueryLocation" : "Seattle, Washington, United States", 
            "stateCountry" : "Washington, United States"
        }, 
        {
            "cityState" : "Toronto, Ontario", 
            "country" : "Canada", 
            "city" : "Toronto", 
            "location" : "Toronto, Ontario, Canada", 
            "cityCountry" : "Toronto, Canada", 
            "cityStateCountry" : "Toronto, Ontario, Canada", 
            "state" : "Ontario", 
            "mapQueryLocation" : "Toronto, Ontario, Canada", 
            "stateCountry" : "Ontario, Canada"
        }, 
        {
            "cityState" : "Vancouver, British Columbia", 
            "country" : "Canada", 
            "city" : "Vancouver", 
            "location" : "Vancouver, British Columbia, Canada", 
            "cityCountry" : "Vancouver, Canada", 
            "cityStateCountry" : "Vancouver, British Columbia, Canada", 
            "state" : "British Columbia", 
            "mapQueryLocation" : "Vancouver, British Columbia, Canada", 
            "stateCountry" : "British Columbia, Canada"
        }
    ]
1
Neeraj Kumar 16 Дек 2019 в 09:37

1 ответ

Вам не нужно знать размер массива, чтобы проверить его, если каждый объект в массиве имеет одинаковую схему. В схеме Avro достаточно указать тип массива с элементами которые определяются схемой каждого из отдельных элементов, перечисленных выше. Если некоторые поля могут быть не заполнены для некоторых объектов в массиве, вы можете сделать их «необязательными», сделав поле Объединение, включая "нулевой" тип для этих полей.

1
mattyb 20 Дек 2019 в 07:03