Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2019 12:58:57

SEvgeniy
Зарегистрирован: 2019-10-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка JSON ответа с сервера

Коллеги добрый день,

Пожалуйста, помогите решить проблему.
Я отправляю post запрос серверу, который возвращает мне ответ json формате.
Этот ответ я записываю в файл для последующей обработки:

Запрос к серверу:

import json
import requests
myurl = "http://....................."
response = requests.post(myurl, auth = ("xyz", "xyz"))
json_text = response.text
print(json_text)
with open("json_resp.txt", "w") as file:
file.write(json.dumps(json_text))

полученный файл:
{
"query": {
"msisdn": {
"ton": 1,
"npi": 1,
"address": "123456789"
},
"sm-RP-PRI": false,
"serviceCentreAddress": {
"ton": 1,
"npi": 1,
"address": "123456789"
}
},
"timeout": true,
"sccp-info": {
"sccp-remote-address": {
"ai": {
"global-title-indicator": 4,
"routing-indicator-bit": false,
"national-reserved-bit": false,
"point-code-indicator": false,
"sub-system-indicator": true
},
"ssn": 6,
"tt": 0,
"nai": 4,
"npi": 1,
"address": "123456789"
},
"sccp-local-address": {
"ai": {
"global-title-indicator": 4,
"routing-indicator-bit": false,
"national-reserved-bit": false,
"point-code-indicator": false,
"sub-system-indicator": true
},
"ssn": 8,
"tt": 0,
"nai": 4,
"npi": 1,
"address": "123456789"
}
},
"user-identifier": "M00000051",
"map-dialog-id": "D00000051",
"billing-info": {
"billed": "0.010000",
"credits": 99991.55
},
"link": "3000"
}

обработка ответа от сервеа:
import json
file = open("json_resp.txt").read()
parse_input = json.loads(file)
query = parse_input["query"]

и тут сразу же получаю ошибку:

query = parse_input
TypeError: string indices must be integers

помогите понять, причину ошибки и как правильно подходить у ее решению.

Заранее Всем спасибо!

Офлайн

#2 Окт. 21, 2019 16:42:05

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Обработка JSON ответа с сервера

Скопировал твой текст себе в текстовый файл, открыл в питоне твоим кодом, всё работает. Что я делаю не так?
Питон 3.7, если что…



Офлайн

#3 Окт. 21, 2019 17:00:47

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Обработка JSON ответа с сервера

> Этот ответ я записываю в файл для последующей обработки:

Зачем ты его в файл записываешь? Сразу обрабатывай.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Окт. 21, 2019 18:11:49

SEvgeniy
Зарегистрирован: 2019-10-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка JSON ответа с сервера

Rodegast
> Этот ответ я записываю в файл для последующей обработки:Зачем ты его в файл записываешь? Сразу обрабатывай.

Ты прав, что когда я это делаю из своего первого скрипта без записи в файл, все работает.

Но все же, не понимаю почему когда вызываю второй свой скрипт где пытаюсь извлечь JSON файл, получаю ошибку:

query = parse_input
TypeError: string indices must be integers

Вот код второго срипта:

import json
file = open("json_resp.txt").read()
parse_input = json.loads(file)
query = parse_input["query"]

Руается имеено на эту строчку: query = parse_input

Офлайн

#5 Окт. 21, 2019 18:13:02

SEvgeniy
Зарегистрирован: 2019-10-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка JSON ответа с сервера

Striver
Скопировал твой текст себе в текстовый файл, открыл в питоне твоим кодом, всё работает. Что я делаю не так?Питон 3.7, если что…

Я использую: Python 3.7.4

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version