Javascript 将字符串转换为JSON node.js

Javascript 将字符串转换为JSON node.js,javascript,json,node.js,rpgle,Javascript,Json,Node.js,Rpgle,非常新的node.js,我有从RPGLE(as400)程序返回的字符串,我想作为下面的JSON示例返回 串 {orderid:996553,workorder:996553.010,shipped:000000001,received:000000001,status:GOOD}, {orderid:996554,workorder:996554.010,shipped:000000001,received:000000001,status:GOOD}, {orderid:999290,work

非常新的node.js,我有从RPGLE(as400)程序返回的字符串,我想作为下面的JSON示例返回

{orderid:996553,workorder:996553.010,shipped:000000001,received:000000001,status:GOOD},
{orderid:996554,workorder:996554.010,shipped:000000001,received:000000001,status:GOOD},
{orderid:999290,workorder:999290.010,shipped:000000001,received:000000001,status:GOOD},
{orderid:999290,workorder:999290.020,shipped:000000001,received:000000001,status:GOOD},
{orderid:999290,workorder:999290.030,shipped:000000001,received:000000001,status:GOOD},
{orderid:999290,workorder:999290.040,shipped:000000001,received:000000001,status:GOOD},
{orderid:999290,workorder:999290.050,shipped:000000001,received:000000001,status:GOOD},
希望按以下方式转换并发送到应用程序api

[{"orderid":144234,"workorder":"996553.010","shipped":1,"received":1,"status":"GOOD"},
{"orderid":999290,"workorder":"996553.010","shipped":1,"received":1,"status":"GOOD"},
{"orderid":999290,"workorder":"999290.010","shipped":1,"received":1,"status":"GOOD"},
{"orderid":999290,"workorder":"999290.020","shipped":1,"received":1,"status":"BAD"},
{"orderid":999290,"workorder":"999290.030","shipped":1,"received":1,"status":"GOOD"},
{"orderid":999290,"workorder":"999290.040","shipped":1,"received":1,"status":"GOOD"},
{"orderid":999290,"workorder":"999290.050","shipped":1,"received":1,"status":"GOOD"}]

最佳实践是什么?如何实现?

您可以将这些行解析为有效的javascript对象,然后将它们字符串化为JSON,如下所示:

const s=`
{orderid:996553,workorder:996553.010,发货:00000000 1,收到:00000000 1,状态:良好},
{orderid:996554,workorder:996554.010,发货:00000000 1,收到:00000000 1,状态:良好},
{订单ID:999290,工作订单:999290.010,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.020,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.030,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.040,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.050,发货:000000001,收到:000000001,状态:良好},
`;
常量数组=s.trim().split(“\n”).map((行)=>
线
.slice(1,-2)//删除括号和逗号
.split(“,”/)拆分为单个键/值对
.map((pair)=>pair.split(“:”)//拆分键/值对
.reduce((结果,[key,value])=>{//reduce对为对象
结果[键]=值;
返回结果;
},{})
);
const json=json.stringify(数组,null,2);

log(json)您可以将这些行解析为有效的javascript对象,然后将它们字符串化为JSON,如下所示:

const s=`
{orderid:996553,workorder:996553.010,发货:00000000 1,收到:00000000 1,状态:良好},
{orderid:996554,workorder:996554.010,发货:00000000 1,收到:00000000 1,状态:良好},
{订单ID:999290,工作订单:999290.010,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.020,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.030,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.040,发货:000000001,收到:000000001,状态:良好},
{订单ID:999290,工作订单:999290.050,发货:000000001,收到:000000001,状态:良好},
`;
常量数组=s.trim().split(“\n”).map((行)=>
线
.slice(1,-2)//删除括号和逗号
.split(“,”/)拆分为单个键/值对
.map((pair)=>pair.split(“:”)//拆分键/值对
.reduce((结果,[key,value])=>{//reduce对为对象
结果[键]=值;
返回结果;
},{})
);
const json=json.stringify(数组,null,2);

log(json)您可以通过一系列正则表达式和一些确定字符串和数值的决策逻辑来完成此字符串转换

var-meh=“{orderid:996553,workorder:996553.010,发货:00000000 1,收到:00000000 1,状态:良好}\
{orderid:996554,workorder:996554.010,发货:00000000 1,收到:00000000 1,状态:良好}\
{订单ID:999290,工作订单:999290.010,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.020,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.030,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.040,发货:000000001,收到:000000001,状态:良好}\
{orderid:999290,workorder:999290.050,发货:000000001,收到:000000001,状态:良好,},”;
meh=“[”+//用[]括起来
meh.replace(/(\w+(=:)/g,“$1”)//搜索后跟冒号的单词
.replace(/,$/,“”)//修剪结束逗号
.replace(/:([\w.]+)/g,函数(匹配,值){//获取值
返回“:”+(//确保前面的冒号已就位
isNaN(值)| |值%1!==0?//是非浮点数吗?
“'+value+'”://如果不是非浮点数,则用“”括起来
parseFloat(value)//如果是数字,则解析
);
})
+ "]";                                            // 附上[]

log(JSON.parse(meh))您可以通过一系列正则表达式和一些确定字符串和数值的决策逻辑来完成此字符串转换

var-meh=“{orderid:996553,workorder:996553.010,发货:00000000 1,收到:00000000 1,状态:良好}\
{orderid:996554,workorder:996554.010,发货:00000000 1,收到:00000000 1,状态:良好}\
{订单ID:999290,工作订单:999290.010,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.020,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.030,发货:000000001,收到:000000001,状态:良好}\
{订单ID:999290,工作订单:999290.040,发货:000000001,收到:000000001,状态:良好}\
{orderid:999290,workorder:999290.050,发货:000000001,收到:000000001,状态:良好,},”;
meh=“[”+//用[]括起来
meh.replace(/(\w+(=:)/g,“$1”)//搜索后跟冒号的单词
.replace(/,$/,“”)//修剪结束逗号
.replace(/:([\w.]+)/g,函数(匹配,值){//获取值
返回“:”+(//确保前面的冒号已就位
isNaN(值)| |值%1!==0?//是非浮点数吗?
“'+value+'”://如果不是非浮点数,则用“”括起来
parseFloat(value)//如果是数字,则解析
);
})
+ "]";                                            // 附上[]

log(JSON.parse(meh))RPGLE程序如何创建字符串?如果是一块一块地做,那么RPGLE程序可能会添加引号并正确设置数字格式。

RPGLE程序如何创建