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

Progress 4GL/OpenEdge如何用WRITE-JSON()输出CRLF换行JSON文件

解决方案

Progress OpenEdge的WRITE-JSON()方法默认输出的换行符为LF(\n),不会自动使用CRLF(\r\n)格式,可通过以下两种方案实现需求:

方案1:使用高版本OpenEdge自带的换行符参数(推荐,适用于OpenEdge 11.7及以上版本)

WRITE-JSON()方法支持第6个可选参数用于指定换行符格式,直接设置为~r~n(Progress 4GL中CRLF的转义写法)即可,修改后代码如下:

DATASET mydataset:WRITE-JSON("file", filename, YES, "utf-8", NO, "~r~n").

传入该参数后,方法会自动把所有格式化产生的换行符替换为CRLF格式输出。

方案2:兼容低版本的手动替换方案

如果使用的OpenEdge版本低于11.7,不支持换行符自定义参数,可以先将JSON内容输出到LONGCHAR变量,替换所有LF为CRLF后再手动写入文件,示例代码如下:

DEFINE VARIABLE lcJson AS LONGCHAR NO-UNDO.

/* 先将JSON内容输出到内存变量 */
DATASET mydataset:WRITE-JSON("longchar", lcJson, YES, "utf-8", NO).

/* 换行符替换:先去重避免重复添加回车符,再统一替换为CRLF */
lcJson = REPLACE(lcJson, "~r~n", "~n").
lcJson = REPLACE(lcJson, "~n", "~r~n").

/* 二进制模式写入文件,避免系统自动转换换行符 */
OUTPUT TO VALUE(filename) BINARY CODEPAGE "utf-8" NO-CONVERT.
PUT lcJson.
OUTPUT CLOSE.

注意事项

  • Windows环境下不要使用默认文本模式写入文件,否则可能会出现CR重复添加的问题,二进制写入的可控性更高。
  • 替换换行符前建议先做一次去重处理,避免部分本身自带CRLF的内容出现重复换行的问题。

内容的提问来源于stack exchange,提问作者wymmdn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:04