JSON 到单元格 google sheet 数组工作但对象不工作由 binanace API
JSON to cell google sheet array work but object not working by binanace API
这是回应:
{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}
这是我的代码:
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce.accountType); // Return SPOT
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rows = [],
balanc;
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
Logger.log(rows); /////////////// return [] why not return SPOT
dataRange = sheet.getRange(1, 1, rows.length, 1);
dataRange.setValues(rows);
JSON return accountType if 运行 没有数组但在添加数组后给我 [] 清空任何帮助。
这是图片:
enter image description here
你的rows
为空的原因是你的jsonResponce
不是数组。如果您将记录 jsonResponce.length
它将 return null
.
示例代码:
function myFunction() {
var jsonData = [{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}];
var data = JSON.stringify(jsonData);
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce);
Logger.log(Array.isArray(jsonResponce))
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
Logger.log(jsonResponce.length);
var rows = [],
balanc;
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
Logger.log(rows); /////////////// return [] why not return SPOT
dataRange = sheet.getRange(1, 1, rows.length, 1);
dataRange.setValues(rows);
}
修改完成:
- 创建一个 json 数组。 (用
[]
封装原始json数据)
输出:
6:37:31 AM Notice Execution started
6:37:31 AM Info [{canDeposit=true, sellerCommission=0.0, balances=[{locked=0.00000000, asset=BTC, free=4723846.89208129}, {locked=0.00000000, asset=LTC, free=4763368.68006011}], takerCommission=15.0, permissions=[SPOT], canTrade=true, makerCommission=15.0, updateTime=1.23456789E8, buyerCommission=0.0, accountType=SPOT, canWithdraw=true}]
6:37:32 AM Info 1.0
6:37:32 AM Info [[SPOT]]
6:37:34 AM Notice Execution completed
注:
您可以使用Array.isArray(),检查变量是否为数组,然后相应地读取数据。
样本:
if(Array.isArray(jsonResponce)){
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
}else{
rows.push([jsonResponce.accountType])
}
(更新)
如果您想将 Binance API 响应放入一个数组中,您可以在数据上附加“[”和“]”。
样本:
var jsonData = {
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
};
var data = JSON.stringify(jsonData);
data = "["+data+"]";
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce);
Logger.log(Array.isArray(jsonResponce))
输出:
12:21:48 AM Info [{makerCommission=15.0, canDeposit=true, balances=[{free=4723846.89208129, locked=0.00000000, asset=BTC}, {free=4763368.68006011, asset=LTC, locked=0.00000000}], takerCommission=15.0, updateTime=1.23456789E8, accountType=SPOT, canTrade=true, sellerCommission=0.0, buyerCommission=0.0, canWithdraw=true, permissions=[SPOT]}]
12:21:48 AM Info true
function myfunk() {
const data = '{"makerCommission":15,"takerCommission":15,"buyerCommission":0,"sellerCommission":0,"canTrade":true,"canWithdraw":true,"canDeposit":true,"updateTime":123456789,"accountType":"SPOT","balances":[{"asset":"BTC","free":"4723846.89208129","locked":"0.00000000"},{"asset":"LTC","free":"4763368.68006011","locked":"0.00000000"}],"permissions":["SPOT"]}';
const obj = JSON.parse(data);
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const vs = obj.balances;
const oA = vs.map(obj => [obj.asset,obj.free,obj.locked]);
sh.getRange(1,1,oA.length, oA[0].length).setValues(oA);
}
工作表 1:
Col1
Col2
Col3
BTC
4723846.892
0
LTC
4763368.68
0
这是回应:
{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}
这是我的代码:
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce.accountType); // Return SPOT
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rows = [],
balanc;
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
Logger.log(rows); /////////////// return [] why not return SPOT
dataRange = sheet.getRange(1, 1, rows.length, 1);
dataRange.setValues(rows);
JSON return accountType if 运行 没有数组但在添加数组后给我 [] 清空任何帮助。
这是图片:
enter image description here
你的rows
为空的原因是你的jsonResponce
不是数组。如果您将记录 jsonResponce.length
它将 return null
.
示例代码:
function myFunction() {
var jsonData = [{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}];
var data = JSON.stringify(jsonData);
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce);
Logger.log(Array.isArray(jsonResponce))
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
Logger.log(jsonResponce.length);
var rows = [],
balanc;
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
Logger.log(rows); /////////////// return [] why not return SPOT
dataRange = sheet.getRange(1, 1, rows.length, 1);
dataRange.setValues(rows);
}
修改完成:
- 创建一个 json 数组。 (用
[]
封装原始json数据)
输出:
6:37:31 AM Notice Execution started
6:37:31 AM Info [{canDeposit=true, sellerCommission=0.0, balances=[{locked=0.00000000, asset=BTC, free=4723846.89208129}, {locked=0.00000000, asset=LTC, free=4763368.68006011}], takerCommission=15.0, permissions=[SPOT], canTrade=true, makerCommission=15.0, updateTime=1.23456789E8, buyerCommission=0.0, accountType=SPOT, canWithdraw=true}]
6:37:32 AM Info 1.0
6:37:32 AM Info [[SPOT]]
6:37:34 AM Notice Execution completed
注:
您可以使用Array.isArray(),检查变量是否为数组,然后相应地读取数据。
样本:
if(Array.isArray(jsonResponce)){
for (i = 0; i < jsonResponce.length; i++) {
balanc = jsonResponce[i];
rows.push([balanc.accountType]);
}
}else{
rows.push([jsonResponce.accountType])
}
(更新)
如果您想将 Binance API 响应放入一个数组中,您可以在数据上附加“[”和“]”。
样本:
var jsonData = {
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
};
var data = JSON.stringify(jsonData);
data = "["+data+"]";
var jsonResponce = JSON.parse(data); // To JSON
Logger.log(jsonResponce);
Logger.log(Array.isArray(jsonResponce))
输出:
12:21:48 AM Info [{makerCommission=15.0, canDeposit=true, balances=[{free=4723846.89208129, locked=0.00000000, asset=BTC}, {free=4763368.68006011, asset=LTC, locked=0.00000000}], takerCommission=15.0, updateTime=1.23456789E8, accountType=SPOT, canTrade=true, sellerCommission=0.0, buyerCommission=0.0, canWithdraw=true, permissions=[SPOT]}]
12:21:48 AM Info true
function myfunk() {
const data = '{"makerCommission":15,"takerCommission":15,"buyerCommission":0,"sellerCommission":0,"canTrade":true,"canWithdraw":true,"canDeposit":true,"updateTime":123456789,"accountType":"SPOT","balances":[{"asset":"BTC","free":"4723846.89208129","locked":"0.00000000"},{"asset":"LTC","free":"4763368.68006011","locked":"0.00000000"}],"permissions":["SPOT"]}';
const obj = JSON.parse(data);
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const vs = obj.balances;
const oA = vs.map(obj => [obj.asset,obj.free,obj.locked]);
sh.getRange(1,1,oA.length, oA[0].length).setValues(oA);
}
工作表 1:
Col1 | Col2 | Col3 |
---|---|---|
BTC | 4723846.892 | 0 |
LTC | 4763368.68 | 0 |