【问题标题】:Parsing nested JSON via Google Scripts通过 Google 脚本解析嵌套的 JSON
【发布时间】:2018-06-17 13:56:47
【问题描述】:

我一直在努力尝试在网上找到一种方法来成功解析来自 API 请求的 JSON 输出。

我正在寻找解析以下 API JSON 示例输出的“ResultData”部分:

{"url":"http://elasticbeanstalk.com/api/results/69/","id":69,"user":3,"inputdata":{"Q1":"Response1","Q2":"Response2","Q3" :"Response3","Q4":"Response4","Q5":"Response5"},"ResultData":"{\"index\":1551,\"ID\":5246,\"Attribute1\": \"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au\" }\n {\"index\":1551,\"ID\":5246,\"Attribute1\":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16 ,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au\"}\n {\"index\":1551,\"ID\":5246,\"Attribute1\ ":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au \"}\n {\"index\":1551,\"ID\":5246,\"Attribute1\":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\" :16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au\"}\n {\"index\":1551,\"ID\":5246,\" Attribute1\":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com .au\"}\n {\"索引\":1551,\"ID\ ":5246,\"Attribute1\":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\ "www.google.com.au\"}\n {\"index\":1551,\"ID\":5246,\"Attribute1\":\"Output1\",\"Attribute2\":\" Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au\"}\n {\"index\":1551,\" ID\":5246,\"Attribute1\":\"Output1\",\"Attribute2\":\"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\" :\"www.google.com.au\"}\n {\"index\":1551,\"ID\":5246,\"Attribute1\":\"Output1\",\"Attribute2\": \"Output2",\"Attribute3\":16,\"Attribute4\":62.9433099,\"Attribute5\":\"www.google.com.au\"}"}

希望导出到谷歌表格的每一行的以下值:

索引 ID Attribute1 Attribute2 Attribute3 Attribute4 Attribute5

有什么想法吗?任何正确方向的帮助或指示将不胜感激!

【问题讨论】:

    标签: json parsing google-apps-script google-sheets-api jsonparser


    【解决方案1】:

    只需使用 String.split() 以换行符 (\n) 作为分隔符拆分“ResultData”字符串,然后将 JSON.parse() 拆分为结果数组的元素。

    【讨论】:

    • @prks21 很高兴我能帮上忙。但是,您的代码中有一些冗余。你应该考虑优化它。
    【解决方案2】:

    解析它,然后拆分它,然后使用 parseJSON 函数遍历各个结果数据行。

    var OutputData = JSON.parse(response).ResultData;
    OutputData = OutputData.split('\n');
    
    // run this look while the variable i is less than 5 and increment i by 1 each time 
    the end of the loop is reached
    for(var i = 0; i < 5; i++) {
    var ResultData = JSON.parse(OutputData[i]);
    parseJSON(i,ResultData);
    }
    
    }
    
    function parseJSON(result, myObject) {
    // define an array of all the object keys
    
    var headerRow = Object.keys(myObject);
    
    // define an array of all the object values
    var row = headerRow.map(function(key){ return myObject[key]});
    
    // define the contents of the range
    var contents = [
     headerRow,
     row
    ];
    
    var contents1 = [
     row
    ];
    
    // select the range and set its values
    var ss = SpreadsheetApp.getActive();
    var rng = ss.getSheetByName("Results").getRange(1, 1, contents.length, headerRow.length )
    var rng1 = ss.getSheetByName("Results").getRange(result+2, 1, 1, headerRow.length )
    
       if (result == 0 ) {
            rng.setValues(contents)
        }
        else {
            rng1.setValues(contents1)
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 2021-05-15
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多