如何将 JSON 文件转换为使用 Google Apps 脚本分隔的新行?

Posted

技术标签:

【中文标题】如何将 JSON 文件转换为使用 Google Apps 脚本分隔的新行?【英文标题】:How to convert JSON file to new line delimited using Google Apps Script? 【发布时间】:2020-07-03 07:17:22 【问题描述】:

我有一个独立的 Google Script 项目,可以从获取 URL 生成嵌套的 JSON。iAmOren的原始代码。

function unFlat(fj) 
  let date = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd");
  var arr=[];
  var objL1, objL2, objL3;
  var prev_level;
  for(var i=0; i<fj.length;i++) 
    var obj=fj[i];
    switch(Number(obj.level)) 
      case 3:
        objL3=;
        objL3.name=obj.name;
        objL3.leads=obj.leads;
        objL3.cost=obj.cost;
        objL3.revenue=obj.revenue;
        objL2.place.push(objL3);
        prev_level=3;
        break;
      case 2:
        objL2=;
        objL2.path=obj.path;
        objL2.name_postfix=obj.name_postfix;
        objL2.path_com=obj.path_com;
        objL2.name=obj.name;
        objL2.place=[];
        objL1.partner.push(objL2);
        prev_level=2;
        break;
      case 1:
        if(prev_level==3) arr.push(objL1);
        objL1=;
        objL1.report_date=date;
        objL1.name=obj.name;        
        objL1.partner=[];
        prev_level=1;
        break;
    
  
  if(fj.length) arr.push(objL1);
  //Save JSON file on my Drive  
  let fileSets = 
    title: 'JSON_Test.json',
    mimeType: 'application/json'
  ;
  let blob = Utilities.newBlob(JSON.stringify(arr), "application/vnd.google-apps.script+json");
  Drive.Files.insert(fileSets, blob);  

它有效,文件出现在我的 Google 驱动器中。然后我想将它用作 BigQuery 的数据集,但它不起作用。 当我尝试将此文件上传到 BigQuery 时,它返回错误:Failed to create table: Error while reading table: my_json, error message: Failed to parse JSON: No object found when new array is started.; BeginArray returned false; Parser terminated before end of string。 我认为这是因为我的 JSON 文件不是新行分隔的。 有什么我错的地方以及如何解决它?

my JSON file 的示例

【问题讨论】:

【参考方案1】:

自己找到解决办法

//Save JSON file on my Drive  
  let fileSets = 
    title: 'JSON_Test.json',
    mimeType: 'application/json'
  ;
  let blob = Utilities.newBlob(JSON.stringify(arr[0]), "application/vnd.google-apps.script+json"); //modified
  Drive.Files.insert(fileSets, blob);

【讨论】:

以上是关于如何将 JSON 文件转换为使用 Google Apps 脚本分隔的新行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Gson 将 XML 文件转换为 Json

如何将json字符串转换为google.visualization.DataTable?

如何在 Eclipse 中使用 gson 将 ResultSet Query 转换为 JSON?

如何使用 Google 的 Vision API 将 PDF(不可搜索)转换为可搜索的 PDF?

json格式怎么转换为excel格式

使用 Jackson 将 Map 转换为 JSON