>

API에서 특정 값만 가져 와서 인쇄하고 싶습니다. 다른 API에 다시 게시해야하기 때문에 JSON으로 인쇄해야합니다.

import requests
auth =('demo', 'demo')
r = requests.get('https://api.demo.com/v1/demo?count=100', auth=auth)
dataa = r.json()
data = dataa['items']['id','amount','newid','email']
print(data)

내 코드는 오류를 발생시킵니다. 내가 dataa["items"][0]['id'] 를 넣을 때  그것은 단지 하나의 가치를 얻습니다  응답 :

{
    "entity": "collection",
    "count": 5,
    "items": [
        {
            "id": "U5GM",
            "entity": "pay",
            "amount": 3000,
            "bank": null,
            "vpa": null,
            "email": "[email protected]",
            "contact": "1349714",
            "notes": {
                "newid": "554545"
            }
        }} 

예상 출력 :

{
            "id": "U5GM",
            "amount": 3000,
            "email": "[email protected]",
            "contact": "1349714",
             "newid": "554545"
        }

  • 답변 # 1

    와이즈 비즈 인 것 같아   items 입니다 . 당신은 list 에만 관심이 있습니까  배치? 그렇다면, 할 수 있습니다

    first
    
    

  • 답변 # 2

    이 코드를 사용하여 응답에서 필요한 값을 추출한 다음 원하는 데이터 유형에 추가 할 수 있습니다.

    >>> items = data['items']
    >>> data_to_post = []
    >>> for item in items:
    ...   data_to_post.append({
    ...     'id': item.get('id', 'NA'),
    ...     'email': item.get('email', 'NA'),
    ...     'amount': item.get('amount', 'NA'),
    ...     'newid': item.get('notes', {'newid': 'NA'})['newid']
    ...   })
    ... 
    >>> data_to_post
    [{'id': 'U5GM', 'email': '[email protected]', 'amount': 3000, 'newid': '554545'}]
    
    

  • 답변 # 3

    먼저 사전에 관심있는 각 값을 저장 한 다음 해당 사전을 json으로 변환하십시오.

    d= {}
    for k, v in j["items"][0].items():
        if k in ["id", "amount", "newid", "email"]:
            d[k] = v
    print(d)
    
    

    import json date_to_store = [] for i in range(len(dataa["items"])): data = {} data['id'] = dataa["items"][i]['id'] data['amount'] = dataa["items"][i]['amount'] data['email'] = dataa["items"][i]['email'] data['newid'] = dataa["items"][i]['notes']['newid'] date_to_store.append(data) json = json.dumps(data_to_store) print(json )

관련 자료

  • 이전 ef code first - 유창한 API를 사용하여 모든 엔티티 필드를 필수로 설정하십시오
  • 다음 php - laravel - where (…) and (cond1 or cond2…)는 항상 and 조건을 생성합니다