简体   繁体   English

将String转换为JSON node.js

[英]Convert String to JSON node.js

Very new to node.js, I have string returning from RPGLE (as400) program, I would like to return as JSON example below. 对于node.js非常新,我有从RPGLE(as400)程序返回的字符串,我想以下面的JSON示例返回。

String

{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},

Would like to convert as below and send to application api 想要进行如下转换并发送到应用程序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"}]

What would be the best practice and how? 什么是最佳做法?

You could parse the lines into valid javascript objects and then stringify them into JSON like this: 您可以将这些行解析为有效的javascript对象,然后将其字符串化为JSON,如下所示:

 const s = ` {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}, `; const array = s.trim().split("\\n").map((line) => line .slice(1, -2) // remove brackets and comma .split(",") // break into individual key/value pairs .map((pair) => pair.split(":")) // split key/value pairs .reduce((result, [key, value]) => { // reduce pairs into an object result[key] = value; return result; },{}) ); const json = JSON.stringify(array, null, 2); console.log(json); 

You can accomplish this string conversion through a series of regular expressions and a little decision logic to determine string and numeric values. 您可以通过一系列正则表达式和一些用于确定字符串和数字值的决策逻辑来完成此字符串转换。

 var meh = "{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},"; meh = "[" + // enclose with [] meh.replace(/(\\w+)(?=:)/g, '"$1"') // search for words followed by a colon .replace(/,$/, '') // trim the ending comma .replace(/:([\\w.]+)/g, function(match, value){ // grab the values return ':' + ( // ensure preceding colon is in place isNaN(value) || value % 1 !== 0 ? // is it a non-float number? '"' + value + '"' : // enclose with "" if not a non-float number parseFloat(value) // parse if is number ); }) + "]"; // enclose with [] console.log(JSON.parse(meh)); 

How is the RPGLE program creating the string? RPGLE程序如何创建字符串? If it is doing it piece by piece, then the RPGLE program could probably add the quotes and format the numbers correctly. 如果它是逐段执行的,则RPGLE程序可能会添加引号并正确格式化数字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM