如何将Data Explorer多行JSON内容合并为可解析的JSON变量?
解决Kusto中多行拆分JSON的合并与解析问题
核心步骤:合并行→清理格式(按需)→解析JSON→提取属性
假设你的表名为SplitJsonTable,包含FileLineContent(拆分的JSON行)和LineNumber(行号)列,按以下步骤处理:
按行号顺序合并所有JSON行
这一步是关键,必须保证行的顺序和原始JSON一致,用make_list配合sort_by指定行号排序,再用strcat_array拼接成完整字符串:SplitJsonTable // 如果有多文件,先按文件名分组:| partition by FileName ( summarize full_json = strcat_array(make_list(FileLineContent, sort_by=LineNumber), "") // )清理JSON格式(按需)
多数情况下,拼接后的字符串已经是有效的JSON(parse_json支持带换行、空格的易读格式),但如果遇到数组末尾多余逗号这类格式问题,用replace_string修正:| extend cleaned_json = replace_string(full_json, ",\n]", "]") // 移除数组最后一个元素后的多余逗号 | extend cleaned_json = replace_string(cleaned_json, "\r\n", "") // 可选:移除所有换行,不影响解析但精简字符串解析JSON并展开多层级数组
用parse_json将字符串转为动态类型,再通过mv-expand逐层展开数组,直到能提取目标属性:| extend json_dynamic = parse_json(cleaned_json) | mv-expand json_dynamic // 展开顶层数组 | mv-expand json_dynamic.level2_array // 展开第二层数组,按需重复此步骤到第5层 | project target_value = json_dynamic.level2_array.target_property // 提取目标属性
常见问题说明
- 若之前聚合函数无效,大概率是没指定
sort_by=LineNumber,导致行顺序混乱拼接出无效JSON; - 无需手动转义引号,只要原始JSON行是合法的,拼接后
parse_json会自动处理; - 如果表中包含多个文件的拆分内容,一定要用
partition by FileName(或其他文件标识列)分组,避免不同文件的行混拼。
内容的提问来源于stack exchange,提问作者ra256
相关产品推荐
相关产品推荐

