将 SSID 列表转换为 JSON/Array

Convert SSID list to JSON/Array

我正在努力使选择不同的 SSID 以切换您从浏览器连接到的 WLAN 成为可能。

var sys = require('sys');
var exec = require('child_process').exec;
app.get(prefix + '/wlan', function(req, res){
child = exec("iwlist wlan0 scan | grep ESSID", function(error, stdout, stderr){
                if(error !== null){
                    console.log('Exec error ' + error);
                }
                else {
                    res.send(stdout);
                }
 });
});

到目前为止,这是我获取 SSID 列表的代码..

输出是这样的:

ESSID:"WLAN-GUEST" ESSID:"WLAN1" ESSID:"WLAN-GUEST" ESSID:"WLAN1" ESSID:"WLAN2"

我不知道为什么两个 ESSID 被列出两次,但我的主要问题是,我如何将其解析为 JSON 或者我如何像访问数组 (wlanlist[0]) 一样访问每个条目?

编辑: 我试着 stdout.replace(" ",", ");和 JSON.parse 但由于它是异步的,因此发送时没有更改。 (不确定这是否可以同步)

Edit2:尝试像这样访问数据:

$(document).ready(function() {
$.get(prefix + '/wlan', function(wlanlist){

    document.getElementById("wlanoptions").options[0] = new Option("Select your WLAN:","");
    document.getElementById("wlanoptions").options[1] = new Option(wlanlist[0],wlanlist[0])
});
}); 

最终结果:

var wlanlistarray = stdout.split("ESSID:"); res.send(wlanlistarray);

另外:

//extract ssid and remove quotes
                var wlanlist = new Array;
                var step1 = stdout.split("ESSID:");
                for(i = 1; i < step1.length; i++){
                    var arr = new Array;
                    arr = step1[i].split('"');
                    //if exists in array -> continue; else create new entry in wlanlist
                    if(wlanlist.indexOf(arr[1]) === -1){wlanlist.push(arr[1]);}
                    else{continue;} 
                }
                res.send(wlanlist);

这应该是 return SSID 数组:

stdout.split("ESSID:")

现在清理",大功告成。