Python Forum

Full Version: JSON response from REST service get nested value
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
When I try to do a priceticker on the Bitvavo API ik get a JSON list response. How do I get one or two values from this list.

from python_bitvavo_api.bitvavo import Bitvavo
import json
import requests

bitvavo = Bitvavo({
  'APIKEY': 'xxxx',
  'APISECRET': 'xxx',
  'RESTURL': 'https://api.bitvavo.com/v2',
  'WSURL': 'wss://ws.bitvavo.com/v2/',
  'ACCESSWINDOW': 10000,
  'DEBUGGING': False
})

response = bitvavo.time()
print("Bitvavo Time on server");
print(response);

print ("Bitvavo Price Ticker");
response = bitvavo.tickerPrice({});
The response will be:

Output:
[{'market': 'ADA-BTC', 'price': '0.0000086084'}, {'market': 'ADA-EUR', 'price': '0.1397'}, {'market': 'AE-BTC', 'price': '0.0000067917'}, {'market': 'AE-EUR', 'price': '0.11125'}, {'market': 'AION-BTC', 'price': '0.0000041387'}, {'market': 'AION-EUR', 'price': '0.062422'}, {'market': 'ANT-BTC', 'price': '0.00017657'}, {'market': 'ANT-EUR', 'price': '2.7721'}, {'market': 'ARK-BTC', 'price': '0.000021235'}, {'market': 'ARK-EUR', 'price': '0.33026'}, {'market': 'BAT-BTC', 'price': '0.00001244'}, {'market': 'BAT-EUR', 'price': '0.20247'}, {'market': 'BCH-BTC', 'price': '0.015544'}, {'market': 'BCH-EUR', 'price': '260.38'}, {'market': 'BSV-BTC', 'price': '0.009594'}, {'market': 'BSV-EUR', 'price': '150.71'}, {'market': 'BTC-EUR', 'price': '16001'}, {'market': 'CMT-BTC', 'price': '0.00000048141'}, {'market': 'CMT-EUR', 'price': '0.007542'}, {'market': 'DCR-BTC', 'price': '0.0011435'}, {'market': 'DCR-EUR', 'price': '20.318'}, {'market': 'DGB-BTC', 'price': '0.0000013197'}, {'market': 'DGB-EUR', 'price': '0.019903'}, {'market': 'ELF-BTC', 'price': '0.0000056772'}, {'market': 'ELF-EUR', 'price': '0.086779'}, {'market': 'ENJ-BTC', 'price': '0.0000082275'}, {'market': 'ENJ-EUR', 'price': '0.12203'}, {'market': 'EOS-BTC', 'price': '0.00016488'}, {'market': 'EOS-EUR', 'price': '2.6584'}, {'market': 'ETC-BTC', 'price': '0.00034581'}, {'market': 'ETC-EUR', 'price': '5.5757'}, {'market': 'ETH-BTC', 'price': '0.031227'}, {'market': 'ETH-EUR', 'price': '499.49'}]
How can I pront only the price from:
ETH-BTC & ETH-EUR

Every time I try to do something with .json it say its a list not a string
Looks like the response object is already a python data structure. You don't need to deserialize it.

Try:

response = [{'market': 'ADA-BTC', 'price': '0.0000086084'}, {'market': 'ADA-EUR', 'price': '0.1397'}, {'market': 'AE-BTC', 'price': '0.0000067917'}, {'market': 'AE-EUR', 'price': '0.11125'}, {'market': 'AION-BTC', 'price': '0.0000041387'}, {'market': 'AION-EUR', 'price': '0.062422'}, {'market': 'ANT-BTC', 'price': '0.00017657'}, {'market': 'ANT-EUR', 'price': '2.7721'}, {'market': 'ARK-BTC', 'price': '0.000021235'}, {'market': 'ARK-EUR', 'price': '0.33026'}, {'market': 'BAT-BTC', 'price': '0.00001244'}, {'market': 'BAT-EUR', 'price': '0.20247'}, {'market': 'BCH-BTC', 'price': '0.015544'}, {'market': 'BCH-EUR', 'price': '260.38'}, {'market': 'BSV-BTC', 'price': '0.009594'}, {'market': 'BSV-EUR', 'price': '150.71'}, {'market': 'BTC-EUR', 'price': '16001'}, {'market': 'CMT-BTC', 'price': '0.00000048141'}, {'market': 'CMT-EUR', 'price': '0.007542'}, {'market': 'DCR-BTC', 'price': '0.0011435'}, {'market': 'DCR-EUR', 'price': '20.318'}, {'market': 'DGB-BTC', 'price': '0.0000013197'}, {'market': 'DGB-EUR', 'price': '0.019903'}, {'market': 'ELF-BTC', 'price': '0.0000056772'}, {'market': 'ELF-EUR', 'price': '0.086779'}, {'market': 'ENJ-BTC', 'price': '0.0000082275'}, {'market': 'ENJ-EUR', 'price': '0.12203'}, {'market': 'EOS-BTC', 'price': '0.00016488'}, {'market': 'EOS-EUR', 'price': '2.6584'}, {'market': 'ETC-BTC', 'price': '0.00034581'}, {'market': 'ETC-EUR', 'price': '5.5757'}, {'market': 'ETH-BTC', 'price': '0.031227'}, {'market': 'ETH-EUR', 'price': '499.49'}]

print([tuple(x.values()) for x in response if x["market"] in ["ETH-BTC", "ETH-EUR"]])

# or...
print()

wanted_markets = ["ETH-BTC", "ETH-EUR"]
for d in response:
    if d['market'] in wanted_markets:
        print(f"Market: {d['market']}, Price: {d['price']}")
@bowlofred This did the trick! Thank you very much