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
相关产品推荐
相关产品推荐

