javascript - 将 Google Sheet 转换为多级 JSON 数组

标签 javascript json google-apps-script stringify

我正在尝试使用 Apps Script 将工作表中的值转换为多级 JSON

将值转换为单级 JSON 非常容易,如下所示:

[{
  "name": "Bob Jones",
  "phone": "555-555-5555",
  "street": "123 Somewhere St.",
  "city": "Nowhere",
  "state": "ID",
  "postal": 45632,
  "country": "USA"
}]

但是,我想要的是:

[{
  "name": "Bob Jones",
  "phone": "555-555-5555",
  "address": {
    "street": "123 Somewhere St.",
    "city": "Nowhere",
    "state": "ID",
    "postal": 45632,
    "country": "USA"
  }
}]

以下是用于格式化 JSON 的代码:

function makeJSON_(object, options) {
  if (options.format == FORMAT_PRETTY) {
    var jsonString = JSON.stringify(object, null, 4);
  } else if (options.format == FORMAT_MULTILINE) {
    var jsonString = Utilities.jsonStringify(object);
    jsonString = jsonString.replace(/},/gi, '},\n');
    jsonString = prettyJSON.replace(/":\[{"/gi, '":\n[{"');
    jsonString = prettyJSON.replace(/}\],/gi, '}],\n');
  } else {
    var jsonString = Utilities.jsonStringify(object);
  }
  return jsonString;
}

设置“预转换”表来创建 JSON 子字符串很容易,但这并不灵活,而且维护起来很麻烦。

如何JSON.stringify()工作表数据自动创建子字符串?

最佳答案

要从您必须的 json 版本转到您想要的版本,您可以执行以下操作 --

var json = [{
  "name": "Bob Jones",
  "phone": "555-555-5555",
  "street": "123 Somewhere St.",
  "city": "Nowhere",
  "state": "ID",
  "postal": 45632,
  "country": "USA"
}]

for (var i=0; i < json.length; i++){
  var currentObj = json[i];
  // make a temporary address object
  var address = {};
  // copy all the attributes over to the temp object
  address.street = currentObj.street;
  address.city = currentObj.city;
  address.state = currentObj.state;
  address.postal = currentObj.postal;
  address.country = currentObj.country;
  // add address to the original object
  currentObj.address = address;
  // get rid of the following attributes from parent
  delete currentObj.street;
  delete currentObj.city;
  delete currentObj.state;
  delete currentObj.postal;
  delete currentObj.country;
}


console.log(json);

比替换字符串中的内容要容易得多。

http://codepen.io/anon/pen/XKOrXa

关于javascript - 将 Google Sheet 转换为多级 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38933709/

相关文章:

javascript - Puppeteer:如何下载整个网页供离线使用

javascript - 使用 getJSON 时回调函数不起作用

ios - 使用可选值解码嵌套 JSON Swift 4

google-apps-script - 如何将一系列单元格存储到数组中?

javascript - 登录并抓取一个使用 CORS(AWS) 和 JS 以使用 Google Apps 脚本填充自身的站点

google-apps-script - 尝试在 GAS doPOST 中使用开发模式

javascript - JQuery - 幻灯片示例

javascript - Flot 升级到 8.1 图形未在 IE 7/8 中呈现

javascript - 通过 Javascript 发送授权 token 承载

java - 如何将 java.util.Optional 与 REST API 一起使用?