【问题标题】:How can I parsing JSON with Node.js in electron renderer.js file?如何在电子 renderer.js 文件中使用 Node.js 解析 JSON?
【发布时间】:2019-03-04 00:47:46
【问题描述】:

我想从 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,我对此感到困惑。这个结果表明它是一个字符串而不是一个数组。我想同时获得这些值和数组的长度。我该怎么办?非常感谢。

【问题讨论】:

    标签: javascript node.js json electron


    【解决方案1】:

    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 变量中。

    【讨论】:

    • 非常感谢。我首先是var hhh = JSON.parse(data);,其次是var heh = JSON.parse(hhh.info);,最后它起作用了。还有一个困扰我很久的问题。我有一个 .html 文件并且有一个表,我想将这些数据传输并遍历到该表中。我对此一无所知。如果您能给我一些有用的建议,我将不胜感激。
    • 也许您应该为此打开单独的问题,因为我认为我无法在评论中做出回应。在这里查看我对另一个问题的回答:stackoverflow.com/a/54569276/189673addTable() 是您需要的功能。不过,您将不得不对其进行一些调整以适应您的情况。不要回避以任何方式为您提供帮助的每一个答案。
    【解决方案2】:

    因为info对象是一个stringify对象,所以需要解析并覆盖它,之后才能读取整个data对象。

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

    希望对你有帮助。

    【讨论】:

    • 非常感谢。我首先是var hhh = JSON.parse(data);,其次是var heh = JSON.parse(hhh.info);,最后它起作用了。还有一个困扰我很久的问题。我有一个 .html 文件并且有一个表,我想将这些数据传输并遍历到该表中。我对此一无所知。如果您能给我一些有用的建议,我将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 2021-11-04
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多