Horray - got the ColdFusion to Binance API working.
Binance API Result has an Array Inside the JSON Structure.
Trying to pull the Fills data. But not having best luck.
<cfset result = '{"symbol":"SHIBUSDT","orderId":1158141049,"orderListId":-1,"clientOrderId":"tAMnbc6XLKEMNFENUdbNvD","transactTime":1645634941287,"price":"0.00000000","origQty":"784913.00","executedQty":"784913.00","cummulativeQuoteQty":"20.72170320","status":"FILLED","timeInForce":"GTC","type":"MARKET","side":"SELL","fills":[{"price":"0.00002640","qty":"784913.00","commission":"0.02072170","commissionAsset":"USDT","tradeId":291444301}]}'>
The array I need starts at the fills with the structure inside it:
,"fills":[{"price":"0.00002640","qty":"784913.00","commission":"0.02072170","commissionAsset":"USDT","tradeId":291444301}]
Starting with this as easy display of the JSON result to easily get the symbol, side, etc...
<cfscript>
record = deserializeJSON(#result#);
writeOutput( "<br>SYMBOL:"& record.symbol);
writeOutput( "<br>SIDE:"& record.side);
</cfscript>
Kinda trying this to get the Fills Array Data but no luck...
<cfoutput>
<cfset arrayOfStructs = deserializeJson(result[fills])>
<cfloop array="#arrayOfStructs#" index="retdata">
<cfset Price = retdata.price />
<cfset QTY = retdata.qty />
#price#
<br>#qty#
</cfloop>
</cfoutput>
Should be an easy thing. Perhaps my brain is burned from all the API fights I've had.
CodePudding user response:
Yeah, wrestling with some API's can short out a few brain fuses at times, but it's good experience for the next tricky one.
record = deserializeJSON(#result#); .. deserializeJson(result[fills])>
Anyway, you're very close. No need to deserialize a second time. Just use the existing record
variable. result[fills]
is already a CF array, which you can loop through
<cfscript>
result = '{"symbol":"SHIBUSDT",....}';
record = deserializeJSON(result);
writeOutput( "<br>SYMBOL:"& record.symbol);
writeOutput( "<br>SIDE:"& record.side);
for (fill in record.fills) {
price = fill.price;
qty = fill.qty;
writeOutput("<br>price="& price &" qty="& qty);
}
</cfscript>
CodePudding user response:
I was able to sort out. Thx for answers. I'll look at that code as well.
Simple CFHTTP POST to the Binance API - for Trades (Buy/Sell)
<cfhttp url="#base_api##req_path#" method="POST" result="result" charset="utf-8">
<cfhttpparam type="header" name="X-MBX-APIKEY" value="#bn_key#">
<cfhttpparam type="body" value="#thebody#">
</cfhttp>
<cfset result = #result.filecontent#>
<cfscript>
record = deserializeJSON(#result#);
need = record.fills;
writeOutput("SYMBOL:"& record.symbol);
writeOutput("<br>SIDE:"& record.side);
// writeDump(need);
// writeDump(record);
</cfscript>
This gets the needed array [need] which has the actual buy/sell data. Then just loop it.
<cfoutput>
<cfloop array="#need#" index="retdata">
<cfset Price = retdata.price />
<cfset QTY = retdata.qty />
PRICE : #price#
<br>Quantity : #qty#
</cfloop>
</cfoutput>