为什么Google会按照他们的方式构建电子表格JSON对象?

时间:2015-07-15 17:23:11

标签: json google-sheets-api gdata

我使用Google Sheets API检索电子表格并通过它进行解析。我正在使用javascript并且我正在请求JSON(REST API的文档实际上在旧的Google Data API文档中 - 非常烦人!)。

以下是我用于GET数据的网址,其中ID是电子表格的ID:

https://spreadsheets.google.com/feeds/cells/"+ID+"/1/public/values?alt=json

这将获得第一个工作表的每个单元格,但是,所有单元格都列在一个数组中。

feed: {
    entry: [
        0: {
            gs$cell: {
                row: 1,
                col: 1,
                $t: 'Value'
            }
        },
        1: {
            gs$cell: {
                row: 2,
                col: 1,
                $t: 'Other Value'
            }
        }
    ]
}

这意味着我必须使用for循环遍历数组(data.feed.entry),使用data.feed.entry[i].gs$cell.row检查它在哪一行,然后将每个单元格排序为每行的数组。这似乎是为了格式化JSON对象以供使用而做的额外工作。

我只是想知道为什么Google会像这样构建他们的JSON对象。他们为什么不按行对细胞进行分组呢?我觉得我错过了什么。

然后我想也许使用list而不是cells更好地获取整行,但是当我这样做时,列是由它们的值定义的,这意味着内容可以& #39;是动态的。在解析数据之前,您必须知道标头值...

feed: {
    entry: [
        0: {
            gsx$MyColumnValue: {
                row: 1,
                col: 1,
                $t: 'Value'
            }
        },
        1: {
            gsx$MyOtherColumnValue: {
                row: 2,
                col: 1,
                $t: 'Other Value'
            }
        }
    ]
}

同样,我不知道为什么Google会以这种方式构建他们的JSON。你知道为什么吗?我错过了什么?

1 个答案:

答案 0 :(得分:0)

FWIW(为了后代),您可以将cells更改为list,以获得基于行的响应。

例如https://spreadsheets.google.com/feeds/list/SPREADSHEET-ID/1/public/values?alt=json