簡體   English   中英

如何將幾個 Google Sheets 列轉換為 JSON 字符串?

[英]How do I convert a couple of Google Sheets columns into a JSON string?

我正在編寫一段代碼,它將兩列 (A, B) 轉換為具有 JSON 格式的鍵/值對。 我不知道如何使它工作。 我目前有一個函數可以讀取值的頂行(鍵)和底行,但我無法讓它顯示中間的行。 我不是工程師或開發人員,但我喜歡編碼。

該表如下所示:

+-------+-------------+
| A     | B           |
+-------+-------------+
| code  | description |
+-------+-------------+
| brand | microsoft   |
+-------+-------------+
| size  | large       |
+-------+-------------+
| color | green       |
+-------+-------------+

我期待得到這樣的 JSON 字符串:

[{"code":"brand","description":"microsoft"}, {"code":"color","description":"green"}, {"code":"size","description":"large"}]

到目前為止,我的 Google Apps 腳本代碼如下所示:

function tableJSON(arr) {
  var i, j, obj = {};
  for (j = 0; j < arr[0].length; j++) {
    obj[arr[0][j]] = {};
  }
  
  for (i = 0; i < arr.length; i++) {
    for (j = 0; j < arr[0].length; j++) {
      obj[arr[0][j]] = arr[i][j];
    }
  }
  
  return JSON.stringify(obj);
}

當我輸入時的結果

="[" & tableJSON(A1:B4) & "]"
是:

  [{"code":"size","description":"large"}]

我確信解決方案很簡單,但我一直無法弄清楚。

問題:

該代碼僅創建 1 個對象並在每次迭代中重寫相同的對象。

解決方案:

  • 移動二維數組以獲取標題

  • 將數組映射到對象

 /*<ignore>*/console.config({maximize:true,timeStamps:false,autoScroll:false});/*</ignore>*/ /** * @param{Array<Array>} arr 2D array * @customfunction * @OnlyCurrentDoc */ function tableJSONFixed(arr) { 'use strict'; const [code, desc] = arr.shift(); return JSON.stringify(arr.map(([v1, v2]) => ({ [code]: v1, [desc]: v2 }))); } console.info( tableJSONFixed([ ['code', 'description'], ['brand', 'google'], ['size', 'large'], ['color', 'green'], ]) );
 <!-- https://meta.stackoverflow.com/a/375985/ --> <script src="https://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

https://github.com/jsoma/tabletop

我正在使用桌面將工作表轉換為 JSON,但如果您有一個組織的 google 帳戶,這將不會工作太久

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM