Web2py синтаксический анализ возвращаемых значений JSON
Я только начинаю с web2py и python, я пытаюсь использовать остальной веб-сервис с использованием запросов, вызов проходит нормально, и я получаю соответствующие данные обратно, но у меня возникают проблемы с поиском информации о том, как разобрать ответ на поле, т.е. присвоение имени клиента переменной. В большинстве примеров просто выводятся возвращаемые данные.json().
import requests
Controller Code:
url = 'http://services/myRestService/OrderInformation/?$top=1'
r = requests.get(url,headers = headers, auth=('testuser','testuser'))
results = r.json()
customername = ?
Results:
{u'd': {u'results': [{u'OrderNumber': u' 159', u'__metadata': {u'type': u'OrderInformation', u'id': u"http://127.0.0.1/services/OrderInformation('%20%20%20%20%20159')", u'uri': u"http://127.0.0.1/services/OrderInformation('%20%20%20%20%20159')"}, u'OrderDate': u'4/12/2012 12:00:00 AM', u'CustomerNumber': u'901 ', u'CustomerName': u’Coffee Outlet '}], u'__next': u'http://127.0.0.1/services/OrderInformation/?$select=CustomerName,CustomerNumber,OrderNumber,OrderDate%20'}}
2 ответа
JSON кажется усеченным. Что Гуарав пишет в комментариях, так это чтобы получить первого клиента в results
перечислить и получить CustomerName
из структуры данных.
См. Python2 или python3 документацию по структурам данных. Или Google для "словари Python". Он подробно объяснит, как обращаться с этими очень полезными структурами данных.
Во-первых, json, который вы показываете, определенно не завершен (отсутствуют закрывающие скобки или в нем есть еще данные).
Это может быть проблемой на стороне сервера (очень маловероятно). Если это так, вы не можете ничего сделать, если вы не сделали этот сервер.
При условии, что это ваша ошибка в копировании json - Ваш вопрос может быть довольно простым и может быть решен с помощью ответа, предоставленного Gaurav.
Если ваш вопрос заключается в удалении пробелов из ключей dict, вы можете удалить их, используя карту python. Что-то вроде map(lambda x: x.strip(), yourList)
осуществимо.
Может быть, предоставить конкретные и точные детали для вашей проблемы.
Надеюсь это поможет!!!