简体   繁体   English

将SSID列表转换为JSON / Array

[英]Convert SSID list to JSON/Array

I'm trying to make it possible to choose different SSID's to switch the Wlan you are connected to from Browser. 我正在尝试选择其他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);
                }
 });
});

This is my code so far to get a SSID list.. 到目前为止,这是我的代码以获取SSID列表。

The Output is like that: 输出是这样的:

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

I have no idea why two ESSID's are listed twice but my main question is, how can I parse this to JSON or how can I access each entry like an array (wlanlist[0])? 我不知道为什么两次列出两个ESSID,但是我的主要问题是,如何将其解析为JSON或如何像数组(wlanlist [0])一样访问每个条目?

Edit: I tried to stdout.replace(" ",", "); 编辑:我试图stdout.replace(“”,“,”); and JSON.parse but as it's async it's sent without changes. 和JSON.parse,但由于它是异步的,因此无需更改即可发送。 (Not sure if that would work as sync) (不确定是否可以同步)

Edit2: Trying to access the data like that: 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])
});
}); 

Final Result: 最后结果:

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

In addition: 此外:

//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);

This should return an array of SSIDs: 这应该返回一个SSID数组:

stdout.split("ESSID:")

Now clean up the " and you are all done. 现在清理" ,您就完成了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM