如何在电子renderer.js文件中使用Node.js解析JSON?

时间:2019-03-04 00:47:46

标签: javascript node.js json electron

我想从Web服务器解析JSON格式的数据集(在Electron renderer.js文件中进行编辑)

refresh.addEventListener("click", function(){
  const http = require('http');
  http.get(
    'http://teamparamount.cn:8080/Paramount/filesroot?username=test', (resp) =>{
      let data = '';
      // A chunk of data has been recieved.
      resp.on('data', (chunk) =>{
        data += chunk;
      });
      // The whole response has been received. Print out the result.
      resp.on('end', () =>{
        // console.log(JSON.parse(data).info);
        // var obj = JSON.stringify(data);
        var hhh = JSON.parse(data);
        var xxx = JSON.parse(data).info;
        // alert(typeof obj);
        // console.log(hhh.length);
        // console.log(obj);
        console.log(data);
        console.log(hhh.status);
        console.log(hhh.info);
        console.log(hhh.info[1].time);
        console.log(hhh.info.length);
        console.log(hhh.info[408]);


        // console.log(obj.info[1]);

        // console.log(obj.status);
        // console.log(obj.status.length);
        function getJsonLth(obj){
          var index = 0;
          for(var i=0;i<obj.length;i++){
            if (obj[i] == ':') {
              index++;
            }
            return index;
            // alert(json1.abc[i].name);
          }
        };
        console.log(getJsonLth(xxx));
      });
    }).on("error", (err) => {
      console.log("Error: " + err.message);
    });
});
在红色圆圈部分,第一个输出是服务器发送的JSON格式数据集。第二个输出是使用 JSON.parse(data).status 之后的结果。第三个输出是使用JSON.parse(data).info之后的结果。而且我认为 var xxx = JSON.parse(data).info xxx是一个数组,如第三个输出中所示。 但是,我想做的是在数组的每个元素中分别获取大小,时间,类型,URL这些值。但是,正如您所看到的, console.log(hhh.info [1] .time); 的输出是不确定的。另外,我想获取此数组的长度,我只使用 console.log(hhh.info.length) ,结果是409,对此我感到困惑。此结果表明它是字符串而不是数组。我想同时获取这些值和数组的长度。我该怎么办?非常感谢。

2 个答案:

答案 0 :(得分:0)

http://teamparamount.cn:8080/Paramount/filesroot?username=test返回以下内容:

{"status":"success","info":"[{\"size\":\"10105\"...

其中info属性是一个字符串,必须单独对其进行分析。那就是你显然想做的:

var xxx = JSON.parse(data).info;

但是您应该执行JSON.parse(data).info而不是JSON.parse(data.info)。然后,您将把info数组接收到xxx变量中。

答案 1 :(得分:0)

这是因为info对象是一个字符串化对象,因此您需要对其进行解析和覆盖,然后才能读取整个数据对象。

var info = JSON.parse(data.info);
data.info = info;

希望它能对您有所帮助。