簡體   English   中英

將String轉換為JSON node.js

[英]Convert String to JSON node.js

對於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,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); 

您可以通過一系列正則表達式和一些用於確定字符串和數字值的決策邏輯來完成此字符串轉換。

 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)); 

RPGLE程序如何創建字符串? 如果它是逐段執行的,則RPGLE程序可能會添加引號並正確格式化數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM