我正在使用'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?
感谢您的帮助。
答案 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'));