2016-10-19 7 views
2

У меня есть API-интерфейс Python, который получает данные из запроса выбора mysql. Данные выглядят так:Как вернуть JSON из PEST API REST

| val | type | status | 
|-----|------|--------| 
| 90 | 1 |  a | 

Эти данные были получены в питоне. Теперь я хочу представить эти данные как JSON моему клиенту REST - как?

Вот мой питон код:

def somefunction(self, by, identifier): 
    # validate args 
    procedure = 'mysproc' + str(by) 

    try: 
     with self.connection.cursor() as cursor: 
      cursor.callproc(procedure,[str(identifier)]) 
      self.connection.commit() 
      result = cursor.fetchone() 

      print("+++ Result: " + str(result) + " +++") 
    except: 
     result = "Request Failed" 
     raise 
    finally: 
     self.DestroyConnection() 

    return json.dumps(result) 

с тем, что мой клиент получает:

"[90, 1, "a"]" 

Вопрос:

есть способ для меня, чтобы получить его в качестве надлежащего JSON? например:

{'val': 90, 'type': 1 , : 'status': "a"} 
+0

Вы должны разобрать json string на стороне клиента, например, делать json.loads, если это клиент python. – Alex

+0

Сделайте инверсию 'json.dumps (my_obj)', вызвав 'json.loads (my_string)' – sisanared

+0

'>>> x = [90, 1," a "] >>> d = {'val' : x [0], 'type': x [1], 'status': x [2]} >>> json.dumps (d) '{"status": "a", "type": 1 , "val": 90} '' –

ответ

1

Сначала вам нужно будет получить запрос mysql для возврата объекта dict вместо списка. Если ваша библиотека является MySQLdb, тогда этот ответ: Python - mysqlDB, sqlite result as dictionary - это то, что вам нужно.

Вот ссылка на документы для MySQLdb: http://www.mikusa.com/python-mysql-docs/docs/MySQLdb.connections.html

Я думаю, что если вы передаете в классе курсора вы хотите использовать при создании курсора результат fetchone будет словарем.

with self.connection.cursor(MySQLdb.cursors.DictCursor) as cursor: 

Запуск json.dumps (result) в словаре даст результат, который вы ищете.

Смежные вопросы