我正在尝试学习AppScript,并以Google表格为例。我想使用工作表中填充的一些数据创建一个简单的JSON对象。
表例
名称编号价格数量
ABC 123100 1
防守342 56 2
HIJ 233 90 3
IJK 213 68 5
我希望JSON像这样
[
{
"Name": "ABC",
"ID": "123",
"Price": 100,
"Qty": 1
},
{
"Name": "DEF",
"ID": "342",
"Price": 56,
"Qty": 2
},
{
"Name": "HIJ",
"ID": "233",
"Price": 90,
"Qty": 3
},
{
"Name": "IJK",
"ID": "213",
"Price": 68,
"Qty": 5
}
]
TQzPIVJf6-w](https://www.youtube.com/watch?v=TQzPIVJf6-w)。但是,该视频谈到了将每个列标题创建为一个对象。如我所希望的,列名是key
和行值是value
。
这是我当前的AppScript代码
function doGet() {
var result={};
var rewards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1')
.getDataRange()
.getValues();
result.rewardObj = makeObject(rewards);
//Logger.log(result.rewardObj);
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON)
}
function makeObject(multiArray)
{
var obj = {};
var colNames = multiArray.shift();
var rowNames = multiArray.slice(0,1);
var rowCount = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getLastRow();
var colCount = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getLastColumn();
for(var j=0;j<4;j++)
{
for(var i=0;i<4;i++)
{
//obj[colNames] = rowNames.map(function(item){return item[i];});
obj[colNames[j][i]] = multiArray[j][i];
}
}
Logger.log(rowCount)
Logger.log(colCount)
Logger.log(multiArray[57][12]);
return obj;
}
输出是单个对象
{"rewardObj":{"Name":"ABC","ID":"123","Price":"100","Qty":"1"}}
PS:我不是程序员,我只是以一种hackey的方式学习一些脚本。抱歉,不了解基本知识:)
请尝试:
function getJsonArrayFromData(data)
{
var obj = {};
var result = [];
var headers = data[0];
var cols = headers.length;
var row = [];
for (var i = 1, l = data.length; i < l; i++)
{
// get a row to fill the object
row = data[i];
// clear object
obj = {};
for (var col = 0; col < cols; col++)
{
// fill object with new values
obj[headers[col]] = row[col];
}
// add object in a final result
result.push(obj);
}
return result;
}
测试功能:
function test_getJsonArrayFromData()
{
var data =
[
['Planet', 'Mainland', 'Country', 'City'],
['Earth', 'Europe', 'Britain', 'London'],
['Earth', 'Europe', 'Britain', 'Manchester'],
['Earth', 'Europe', 'Britain', 'Liverpool'],
['Earth', 'Europe', 'France', 'Paris'],
['Earth', 'Europe', 'France', 'Lion']
];
Logger.log(getJsonArrayFromData(data));
// => [{Mainland=Europe, Country=Britain, Planet=Earth, City=London}, {Mainland=Europe, Country=Britain, Planet=Earth, City=Manchester}, {Mainland=Europe, Country=Britain, Planet=Earth, City=Liverpool}, {Mainland=Europe, Country=France, Planet=Earth, City=Paris}, {Mainland=Europe, Country=France, Planet=Earth, City=Lion}]
}
我有两个json对象,请不要是字符串,我想将它们组合成一个json对象,如下所示。 两个对象: 预期结果: 有没有一种优雅的方法可以做到这一点?我的意思是,不提取每支笔和每本书的值,然后使用以下方法将它们重新插入包 我正在使用org。科德豪斯。抛弃json。JSONObject,如果需要该信息。
问题内容: 我想获得像这样的Hashtable的JSON表示形式: 结果是: 但是,如果将JSON字符串转换回去,则不会得到HashTable,而会得到PSCustomObject。 那么,如何可靠地序列化上述Hashmap? 问题答案: $json = @{Path=”C:\temp”; Filter=”*.js”} | ConvertTo-Json
我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?
问题内容: 我是JavaScript的初学者,想显示HTML中的对象数组。 数据格式如下: 我想使用包含三列(id,名称,相关性)的列表来显示它们。ID可以从1自动增加。 谁能告诉我如何编写一个JavaScript代码来显示它? 请给我一些材料或示例进行学习。 问题答案: 说明 您想要的是用JavaScript填充HTML中的表(或另一个DOMElement),一旦加载页面并接收到JSON对象,该
问题内容: 我有从外部应用程序获取数据的Java应用程序。传入的JSON以字符串形式。我想解析该Strings并创建BSON对象。 不幸的是,我在Java的BSON实现中找不到用于此的API。 我是否像GSON这样使用了外部解析器? 问题答案: 最简单的方法似乎是使用JSON库将JSON字符串解析为,然后使用方法将这些值放入。
问题内容: 我终于从包含许多json对象的文件中获得了我需要的数据输出,但是当它在数据中循环时,我需要一些帮助将以下输出转换为单个数据帧。这是产生输出的代码,包括输出外观的示例: 原始数据: 运行上面的命令时,我将获得示例输出,我希望将其存储为3列的pandas数据框中。 因此,以下代码似乎更接近,因为如果我在列表中传递并转置df,它会给我一个时髦的df。关于如何正确调整此形状的任何想法吗? 数据