Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将文本内容解析为particluar json格式_Javascript_Json - Fatal编程技术网

Javascript 将文本内容解析为particluar json格式

Javascript 将文本内容解析为particluar json格式,javascript,json,Javascript,Json,我有一个项目的要求。我得到的文本格式如下所示的数据 SL NO POLICY NO AMOUNT NAME CGST TAX 02 33051090 195.0 D BL ESSENTIAL 9.00% 03 33051091 195.1 D HRFL COD 9.00% 但我需要处理文本内容,并由此形成json [{ "SL NO":"02", "POLICY NO":"33051090", "AMOUNT":"195.

我有一个项目的要求。我得到的文本格式如下所示的数据

SL NO  POLICY NO  AMOUNT  NAME            CGST TAX
02     33051090   195.0   D BL ESSENTIAL  9.00%
03     33051091   195.1   D HRFL COD      9.00%
但我需要处理文本内容,并由此形成json

[{
"SL NO":"02",
"POLICY NO":"33051090",
"AMOUNT":"195.0",
"NAME":"D BL ESSENTIAL",
"CGST TAX":"9.00%"
},
{
"SL NO":"03",
"POLICY NO":"33051091",
"AMOUNT":"195.1",
"NAME":"D HRFL COD",
"CGST TAX":"9.00%"
}]
我无法将任何逻辑视为如何区分值并映射到json属性,因为其间有很多空白


我获取的内容之间没有唯一的分隔符。因此它与CSV数据不同。

由于除名称外的所有字段都是数字字段,因此可以使用正则表达式匹配它们。名称是介于金额和税率之间的所有内容

let re=/^(\d+)\s+(\d+)\s+([\d.]+)\s+(.*?)\s+([\d.]+%)$/;
let data=`SL无保单无金额名称CGST税
02 33051090 195.0日基本法基本9.00%
033305109195.1 D HRFL COD 9.00%`;
设obj=[];
data.split('\n').forEach(行=>{
让match=line.match(re);
如果(匹配){
推({
“SL编号”:匹配[1],
“保单编号”:匹配[2],
“金额”:匹配[3],
“名称”:匹配[4],
“CGST税”:匹配[5]
});
}
});

控制台日志(obj)您可以使用正则表达式解决这个问题,类似于
(\d+)\s+(\d+)\s+([\d\.]+)\s+([\w\s]+)\s+([\d\.]+\%)之类的方法。

var re=/^(\d+)\s+(\d+)\s+([\d\.]+)\s+([\w\s]+)\s+([\d\.]+\%)$/;
var数据=`SL无保单无金额名称CGST税
02 33051090 195.0日基本法基本9.00%
033305109195.1 D HRFL COD 9.00%`;
var result=data.split(“\n”).slice(1.map)(项=>{
var匹配=项目匹配(re);
返回{
“SL编号”:匹配[1],
“保单编号”:匹配[2],
“金额”:匹配[3],
“名称”:匹配[4],
“CGST税”:匹配[5]
};
});

控制台日志(结果)可能重复的@AshenGunaratne那里的代码取决于字段之间的明确分隔符。这个文件似乎没有。我会回到数据的提供者那里,要求一个带分隔符的文件…我必须同意@HereticMonkey。获取一个格式正确的源文件进行读取,否则试图编写代码以找出值的真正含义会有太大的风险。垃圾输入导致垃圾输出。我要提醒的是,对于这些特定数据的特定格式,这是有效的。任何脱离模式的东西都会导致失败;例如,其中一个数字列中的“N/a”值。很好。我添加了第二个版本,它假设这些列中没有任何空格,只有name列可以有空格。