ADF数据流构建JSON文件时移除空JSON对象与数组的方法
在ADF数据流中移除嵌套空对象和空数组的解决方法
步骤1:将单个字段转换为非空对象
通过派生列组件,针对邮箱、地址字段生成仅包含有效内容的结构化对象,空值时返回null:
- 派生列名:
emailObj,表达式:iif(!isNull(email) && trim(email) != '', struct(email as email), null()) - 派生列名:
addressObj,表达式:iif(!isNull(address) && trim(address) != '', struct(address as address), null())
步骤2:生成过滤后的联系人数组
再添加一个派生列,把上述对象收集到数组中,并过滤掉null元素:
- 派生列名:
contactData,表达式:filter(array(emailObj, addressObj), item -> !isNull(item))
步骤3:移除空数组
判断过滤后的数组长度,为空则将整个contactData设为null(Sink可识别并移除null字段):
- 修改
contactData的派生表达式:iif(length(contactData) == 0, null(), contactData)
步骤4:Sink端配置
在JSON Sink的设置面板中,找到Null值处理选项,勾选移除包含null值的列。此时空的contactData数组会因为被设为null而被移除,嵌套的空对象也已被过滤,最终输出的JSON不会包含无效的空结构。
补充提示
- 如果联系人对象结构更复杂(比如邮箱包含多个子字段),只需在
struct()中调整字段映射,保留空值判断逻辑即可。 - 若CSV中的空值是空白字符串而非null,必须用
trim(field) != ''配合!isNull()做双重判断,避免遗漏空白内容的情况。
内容的提问来源于stack exchange,提问作者user21046852
相关产品推荐
相关产品推荐

