s19s93
@s19s93

Как извлечь данные из Json?

Добрый !
Подскажите как извлечь данные из json ?
Есть следующее AIP
https://api.bittrex.com/api/v1.1/public/getmarkets
Данные приходят вот так
<code>
{
  "success": true,
  "message": "''",
  "result": [
    {
      "MarketCurrency": "LTC",
      "BaseCurrency": "BTC",
      "MarketCurrencyLong": "Litecoin",
      "BaseCurrencyLong": "Bitcoin",
      "MinTradeSize": 0.01,
      "MarketName": "BTC-LTC",
      "IsActive": true,
      "IsRestricted": false,
      "Created": "2014-02-13T00:00:00",
      "Notice": "BTC-LTC",
      "IsSponsored": false,
      "LogoUrl": "https://storage.blob.core.windows.net/public/8637ccad-9e7f-45ac-8f03-a41b440e3911.png"
    }
  ]
}
</code>


Подскажите как вытащить все данные "MarketCurrency": "LTC", "BaseCurrency": "BTC" и тд .
Пишу следующее
import config #Конфигурация
import requests
import json

all = requests.get(config.url2)
all_data =json.loads(all.text)

for el in all_data :
    if el ['Currency']=='LTC':
        print (el[0]['Currency'])

Получаем след ошибку
TypeError: string indices must be integers
Немного не ясно в чем ошибка ?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
ramzis
@ramzis
FullStackOverflow
import requests
res = requests.get('https://api.bittrex.com/api/v1.1/public/getmarkets').json()['result']
for i in res:
    print(i['MarketCurrency'])
    print(i['BaseCurrency'])
    print(i['MarketCurrencyLong'])
    print(i['BaseCurrencyLong'])
    print(i['MinTradeSize'])
    print(i['MarketName'])
    print(i['Created'])
    print('-------------------')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
hekkaaa
@hekkaaa
Junior DevOps
Привет!
Вот мой пример подобной реализации api

import requests #библиотека для чтения запросов

response = requests.get('https://1234.com/public', params=params) #запрос к api
workrequest = response.json() #забираем json из запроса. Обычно там список что то подобное

sql_json = [] #создаем свой список (list) пустой
    #циклом забираем данные в своей список.
    for i in range(len(workrequest)):
        sql_json.append(workrequest[i]['globalTradeID'])
        sql_json.append(workrequest[i]['tradeID'])
        upgradata_str = workrequest[i]['date']
        sql_json.append(updateloghourse(upgradata_str))
        sql_json.append(workrequest[i]['type'])
        sql_json.append(workrequest[i]['rate'])
        sql_json.append(workrequest[i]['amount'])
        sql_json.append(workrequest[i]['total'])

sqlADDinfoTable(sql_json,name_table) # В моем случае я отправляю данные сразу в таблицу SQL
        sql_json.clear() #Очищаю список для новой итерации цикла.
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
data = '''{
  "success": true,
  "message": "''",
  "result": [
    {
      "MarketCurrency": "LTC",
      "BaseCurrency": "BTC",
      "MarketCurrencyLong": "Litecoin",
      "BaseCurrencyLong": "Bitcoin",
      "MinTradeSize": 0.01,
      "MarketName": "BTC-LTC",
      "IsActive": true,
      "IsRestricted": false,
      "Created": "2014-02-13T00:00:00",
      "Notice": "BTC-LTC",
      "IsSponsored": false,
      "LogoUrl": "https://storage.blob.core.windows.net/public/8637ccad-9e7f-45ac-8f03-a41b440e3911.png"
    }
  ]
}'''

import json

all_data = json.loads(data)
my_data = all_data['result'][0]
for key, value in my_data.items():
    if 'Currency' in key:
        print (value)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы