代码之家  ›  专栏  ›  技术社区  ›  Neeraj Kumar

使用avro模式验证大小为动态的json对象数组

  •  0
  • Neeraj Kumar  · 技术社区  · 5 年前

    我正在尝试验证json对象的数组,这些对象的大小在apachenifi中是动态的。我知道如果大小已知,我们可以编写一个模式来验证。即使大小是动态的,也有方法验证。

    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"
            }
        ]
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   mattyb    5 年前

    您不需要知道数组的大小就可以验证它,只要数组中的每个对象都有相同的模式。在Avro模式中,您只需指定 Array type 包含由上面列出的每个单独项的架构定义的项。如果数组中的某些对象可能没有填充某些字段,可以通过将字段设置为 Union 包括“null”类型作为这些字段的可能。