Javascript 将文本列转换为JSON格式

Javascript 将文本列转换为JSON格式,javascript,jquery,json,node.js,npm,Javascript,Jquery,Json,Node.js,Npm,我们有以下格式的资源包/属性: [tag1] server1 server2 [tag2] server3 server4 [tag3] server5 server6 [No Software Installed] server7 [tag2] server8 [tag5] server9 [tag1] server10 server11 [tag3] server12 server13 server14 server15 [tag6] server16 server17 我们需要将其转换为

我们有以下格式的资源包/属性:

[tag1]
server1
server2
[tag2]
server3
server4
[tag3]
server5
server6
[No Software Installed]
server7
[tag2]
server8
[tag5]
server9
[tag1]
server10
server11
[tag3]
server12
server13
server14
server15
[tag6]
server16
server17
我们需要将其转换为JSON格式,例如:

[
["tag1","server1,server2"],
["tag2","server3,server4"],
["tag3","server5,server6"],
["No Software Installed","server7"],
["tag2","server8"],
["tag5","server9"],
["tag1","server10,server11"],
["tag3","server12,server13,server14,server15"],
["tag6","server16,server17"]
]

有没有任何现有的工具可以进行这样的转换?

您可以使用regex来实现这一点,类似这样的工具也可以

var regex=/^\[.\]$/gm;
变量输入=`[tag1]
服务器1
服务器2
[tag2]
服务器3
服务器4
[tag3]
服务器5
服务器6
[未安装软件]
服务器7
[tag2]
服务器8
[tag5]
服务器9
[tag1]
服务器10
服务器11
[tag3]
服务器12
服务器13
服务器14
服务器15
[tag6]
服务器16
服务器17`;
//使用regex获取键和值
var key=input.match(regex);
var值=输入.分割(regex);
values.shift()//删除第一个条目,它将为空
//迭代键并生成输出
var输出=[];
对于(i=0;i

您的问题有一个简单的解决方案

var string = `[tag1]
server1
server2
[tag2]
server3
server4
[tag3]
server5
server6
[No Software Installed]
server7
[tag2]
server8
[tag5]
server9
[tag1]
server10
server11
[tag3]
server12
server13
server14
server15
[tag6]
server16
server17`;
string = string.split('\n'); // split new line
var json = string.reduce(function(o,n){ 
  if(n.charAt(0) === '['){
    o.push([n.slice(1,n.length-1)]);
    return o;
  }
  o[o.length-1].push(n.replace('\n',''))
  return o;
},[])
console.log(JSON.stringify(json,null,' '));

这里有一个

这非常接近
ini
格式。如果不写一些习惯的东西,我不知道你是否能达到你想去的地方。这可能是一个好的开始。