Как извлечь атрибут из ответа json с помощью python

avatar
Rana Wael
7 апреля 2018 в 22:23
602
1
0

Я использую API face++, мне нужно получить атрибут из первого запроса (json_resp), чтобы добавить его во второй (json_resp2)

import requests

json_resp = requests.post( 'https://api-          us.faceplusplus.com/facepp/v3/detect',
          data  = { 'api_key' : 'api key' ,
          'api_secret' : 'api secret',
           'image_url'     : 'http://www.pick-health.com/wp-content/uploads/2013/08/happy-person.jpg' } )

print("Response : ", json_resp.text)

Этот запрос выводит:

Ответ: {"image_id": "0UqxdZ6b58TaAFxBiujyMA==", "request_id": "1523139597,9f47c376-481b-446f-9fa3-fb49e404437c", "time_used": 327, "faces": [{"face_rectangle": {"width": 126, "top": 130, "left": 261, "height": 126}, "face_token": "2da210ada488fb10b58cdd2cd9eb3801"}]}

Мне нужно получить доступ к face_token, чтобы передать его второму запросу:

json_resp2 = requests.post( 'https://api-us.faceplusplus.com/facepp/v3/face/analyze',
          data  = { 'api_key' : 'api key' ,
          'api_secret' : 'api secret',
           'face_tokens'     : 'json_resp.face_tokens',
           'return_landmark':0,
           'return_attributes':'emotion'} )

print("Response2 : ", json_resp2.text)

как я могу это сделать?

Источник
Stop harming Monica
7 апреля 2018 в 22:39
0

docs.python.org/3/library/json.html

Ответы (1)

avatar
touch my body
7 апреля 2018 в 22:49
1

Чтобы получить текстовую строку из объекта ответа, вы можете использовать json_resp.text. Затем вы можете использовать библиотеку json, чтобы преобразовать это в dict, а затем извлечь нужное поле:

.
json_resp = requests.post(...) ## Your post request, as written above

node = json.loads(json_resp.text)
face_token = node['faces'][0]['face_token']

Вот полный код (используя ваши фрагменты выше):

import requests
import json


api_key = 'your api key'
api_secret = 'your api secret'

json_resp = requests.post(
    'https://api-us.faceplusplus.com/facepp/v3/detect',
    data = {
        'api_key'    : api_key,
        'api_secret' : api_secret,
        'image_url'  : 'http://www.pick-health.com/wp-content/uploads/2013/08/happy-person.jpg'
    }
)

node = json.loads(json_resp.text)
face_token = node['faces'][0]['face_token']

json_resp2 = requests.post(
    'https://api-us.faceplusplus.com/facepp/v3/face/analyze',
    data  = {
        'api_key'           : api_key,
        'api_secret'        : api_secret,
        'face_tokens'       : face_token,
        'return_landmark'   : 0,
        'return_attributes' : 'emotion'
    }
)

print("Response2 : ", json_resp2.text)

PS: не рекомендуется публиковать ключи API в Интернете, так как люди могут увеличить ваш счет, используя ваши услуги.