【问题标题】:Stream analytics parse json, same key can be array or not流分析解析 json,相同的 key 可以是数组,也可以不是
【发布时间】:2020-11-08 21:42:50
【问题描述】:

将 XML 转换为 JSON 并发送到 EventHub,然后流分析对其进行处理。 问题是当 XML 使用相同的标签名称时,它会在 JSON 端转换为列表,但是当只有一个标签时不会转换为列表。所以同一个标签可以是数组,也可以不是数组。

例如: 我可以收到:

{
  "k1": 123,
  "k2": {
    "l1": 2,
    "l2": 12
  }
}

或:

{
  "k1": 123,
  "k2": [
    {
      "l1": 2,
      "l2": 12
    },
    {
      "l1": 3,
      "l2": 34
    }
  ]
}

我可以很容易地独立处理第一个场景和第二个场景,但是我不知道如何同时处理这两个场景,这可能吗?

【问题讨论】:

    标签: json azure-stream-analytics


    【解决方案1】:

    是的,是的。如果您知道如何分别处理每种情况,那么在您单独处理它们之前,我只会建议您如何区分这两种情况。

    本质上,这个想法是检查该字段是否是一个数组。我所做的是,我在javascript中编写了一个UDF函数,如果传递的对象是一个数组,则返回“true”/“false”:

    function UDFSample(arg1) {
        'use strict';
        var isArray = Array.isArray(arg1);
        return isArray.toString();
    }
    

    您可以在组查询中使用它:

    with test as (SELECT Document from input where UDF.IsArray(k2) = 'true')
    

    现在“测试”包含您可以将其视为数组的项目。对于 k2 只是一个对象的情况,您也可以这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多