如何解析一个不寻常的数组?

时间:2018-05-02 09:50:10

标签: javascript arrays json parsing

我正在使用'cordova-brother-label-printer'cordova插件来获取打印机列表。 findNetworkPrinters函数返回如下数据:

[{nodeName=PrinterName123456, serNo=Serial12345, ipAddress=192.168.1.134, macAddress=MA:CA:DD:RE:SS}]

这不是标准的JSON编码字符串,因此我无法使用JSON.parse解析它。有没有其他方法将其转换为JSON?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

使用String.replace()和RegExp将字符串重新格式化为JSON格式并使用JSON.parse()解析它:

const str = '[{nodeName=PrinterName123456, serNo=Serial12345, ipAddress=192.168.1.134, macAddress=MA:CA:DD:RE:SS}]';

const json = str
  .replace(/([^\[\]{}=\s,]+)/g, '"$1"')
  .replace(/=/g, ':');

console.log(JSON.parse(json));

答案 1 :(得分:1)

您可以替换

  • {{"
  • }"}
  • ,\s*","
  • =":"

按此顺序创建有效的JSON字符串,然后解析。



var input = "[{nodeName=PrinterName123456, serNo=Serial12345, ipAddress=192.168.1.134, macAddress=MA:CA:DD:RE:SS}]";
var output = JSON.parse(
   input.replace(/{/g,'{"')
        .replace(/}/g, '"}')
        .replace(/,\s*/g, '","')
        .replace(/=/g, '":"')
   );

console.log(output);




答案 2 :(得分:1)

使用javascript' replace函数,您应该能够将其转换为有效的JSON。

试试这个:

var inputString = '[{nodeName=PrinterName123456, serNo=Serial12345, ipAddress=192.168.1.134, macAddress=MA:CA:DD:RE:SS}]';
var json = JSON.parse(inputString.replace(/([^={]*)=([^,}]*)(,\s?)?/g, '"$1": "$2"$3'));

正则表达式:https://regex101.com/r/AMCNlh/1