You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下DataWeave处理NDJSON文件失败的解决方案求助

处理DataWeave CLI中NDJSON文件的解决方案

针对你在Windows 10命令行使用DataWeave CLI V1.0.34(运行时V2.6.0-SNAPSHOT)处理NDJSON文件时遇到的「未知内容类型」问题,提供以下几种无需依赖jq的解决方法:

方法1:手动拆分并解析NDJSON行

由于NDJSON本质是每行一个独立JSON对象,可先以纯文本读取文件,再拆分每行并逐个解析:

%dw 2.0
output application/json
---
// 替换为你的NDJSON文件绝对路径
readUrl("file:///C:/your-folder-path/beat_salary.ndjson", "text/plain") 
    // 兼容Windows的换行符(\r\n)和Unix换行符(\n)
    splitBy /\r?\n/ 
    // 过滤空行(避免文件末尾空行导致解析错误)
    filter ($ != "") 
    // 将每行文本转为JSON对象
    map read($, "application/json")

执行命令示例:

dw -f your-script.dwl -o output.json

方法2:升级DataWeave版本

你当前使用的运行时是2.6.0-SNAPSHOT(快照版),存在兼容性问题。升级到2.7.0及以上稳定版后,DataWeave默认支持application/ndjson和application/x-ndjson内容类型,可直接读取:

脚本方式

%dw 2.0
output application/json
---
readUrl("file:///C:/your-folder-path/beat_salary.ndjson", "application/ndjson")

命令行直接处理

dw -i beat_salary.ndjson -inputType application/ndjson -o output.json

方法3:手动注册NDJSON内容类型(旧版本兼容)

如果无法升级版本,可在脚本中手动注册NDJSON的媒体类型解析逻辑:

%dw 2.0
import * from dw::Runtime
output application/json
---
do {
    // 注册application/ndjson类型的读写逻辑
    var _ = registerMediaType(
        mediaType: "application/ndjson",
        reader: (input: String) -> input splitBy /\r?\n/ filter ($ != "") map read($, "application/json"),
        writer: (value: Array<Any>) -> value map write($, "application/json") joinBy "\n"
    )
    ---
    readUrl("file:///C:/your-folder-path/beat_salary.ndjson", "application/ndjson")
}

内容的提问来源于stack exchange,提问作者Alejandro Bermúdez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:12:17