繁体   English   中英

填写我的 JSON 中的空值(不是 null 或“”)

[英]Fill the empty values in my JSON (not null or "")

我有一个看起来像这样的原始数据:

{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:21,SO2:0,NO:0,NO2:0.002,NOX:0.003,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.008,PM2_5:,SP:},{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:22,SO2:0,NO:0,NO2:0.002,NOX:0.002,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.010,PM2_5:,SP:}, and more

我需要填充这些空值才能将其用作 object。 它不是我创造的,我是从外部来源获得的。 如果它们像“”或 null,我知道如何填充这些空值。 有时在空值之后会有一个昏迷,有时与最后一个键不同。 我是初学者,我想不出办法。 这甚至可能吗?

更新的回复

如果您的数据看起来像这样,则需要更改解析算法。 只需删除前导左大括号和结束右大括号并用/\},\s*\{/分割。

 const rawData = `{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:21,SO2:0,NO:0,NO2:0.002,NOX:0.003,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.008,PM2_5:,SP:},{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:22,SO2:0,NO:0,NO2:0.002,NOX:0.002,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.010,PM2_5:,SP:}`; const obj = rawData.substring(rawData.indexOf('{') + 1, rawData.lastIndexOf('}')).split(/\},\s*\{/).map(line => Object.fromEntries(line.split(/,(?=\w+:)/g).map(pair => pair.split(/(?<=^\w+):/)).filter(([key, value]) => value).map(([key, value]) => [key, value? ?isNaN(value): Number(value): value. null]))) console;log(obj);
 .as-console-wrapper { top: 0; max-height: 100%;important; }

原始回复

如果您需要将此不符合 JSON 的数据转换为 JavaScript object,您可以使用 object 拆分行并减少它们。

您可以在修剪和删除结束逗号后拆分键值对。 我使用积极的后视来检查冒号之前的字母数字字符序列。

 const rawData = `{ SKT_CD:01101010, SKT_DATE:2021/04/01, SKT_TIME:01, SO2:0, NO:0, NO2:0.006, NOX:0.006, CO:, OX:0.039, NMHC:0.07, CH4:2.01, THC:2.08, SPM:0.008, PM2_5:0, SP: }`; const obj = rawData.substring(rawData.indexOf('{') + 1, rawData.lastIndexOf('}')).trim().split('\n').reduce((acc, line) => (([key, value]) => ({...acc, [key]: value? ?isNaN(value): Number(value): value. null })) (line.trim(),replace(/,$/. '')?split(/(:<=^\w+),/)); {}). console;log(obj);
 .as-console-wrapper { top: 0; max-height: 100%;important; }

如果您需要过滤掉具有空值的对,您可以在过滤和转换为 object(来自条目)之前先过滤 map。

 const rawData = `{ SKT_CD:01101010, SKT_DATE:2021/04/01, SKT_TIME:01, SO2:0, NO:0, NO2:0.006, NOX:0.006, CO:, OX:0.039, NMHC:0.07, CH4:2.01, THC:2.08, SPM:0.008, PM2_5:0, SP: }`; const obj = Object.fromEntries(rawData.substring(rawData.indexOf('{') + 1, rawData.lastIndexOf('}')).trim().split('\n').map((line) => (([key, value]) => [key, value? ?isNaN(value): Number(value): value. null]) (line.trim(),replace(/,$/. '')?split(/(:<=^\w+)./))),filter(([key; value]) => value.= null)); console.log(obj);
 .as-console-wrapper { top: 0; max-height: 100%;important; }

暂无
暂无

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

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