如何在JSON中放置字典?

juud5qan  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(172)

我正在使用REST API,需要返回一个包含值的JSON 但是,我需要payload变量的items来显示cart_item中的所有项。
我有这个:

payload = {
    "items": [],
}

我试过了,但我不知道如何将其放入有效负载的items中:

for cart_item in cart_items:
    item = [
        {
            "reference_id": f"{cart_item.sku}",
            "name": f"{cart_item.product.name}",
            "quantity": cart_item.quantity,
            "unit_amount": cart_item.product.price
        },
     ]

我要你回我电话:

payload = {
    "items": [ 
        {
            "reference_id": "SKU49FS20DD",
            "name": "Produto 1",
            "quantity": 1,
            "unit_amount": 130
        },
        {
            "reference_id": "SKU42920SSD",
            "name": "Produto 2",
            "quantity": 1,
            "unit_amount": 100
        }
    ],
}

response = requests.request(
    "POST",
    url,
    headers=headers,
    json=payload
)

我不知道是否需要将JSON中的内容传递到字典进行更改,然后再次将其发送到JSON

xxe27gdn

xxe27gdn1#

不要尝试一次创建一个项目,只需使用解析直接填充payload['items']

payload['items'] = [
    {
        'reference_id': cart_item.sku,
        'name': cart_item.product.name,
        'quantity': cart_item.quantity,
        'unit_amount': cart_item.product.price 
    }
    for cart_item in cart_items
]

另一个可能的改进是关于requests的,可以使用requests.post(...)来代替requests.requests('POST' ...)
最后,如果API确实需要json来拥有有效的JSON字符串,请使用json.dumps来转换它。
综合考虑:

import requests
import json

payload['items'] = [
    {
        'reference_id': cart_item.sku,
        'name': cart_item.product.name,
        'quantity': cart_item.quantity,
        'unit_amount': cart_item.product.price 
    }
    for cart_item in cart_items
]

response = requests.post(
    url,
    headers=headers,
    json=json.dumps(payload)
)

即使我几乎百分之百地肯定requests.post()会做正确的事情,如果你只是通过payload,就像在json=payload中一样。

nuypyhwy

nuypyhwy2#

您只是缺少列表上的“append()“方法,以及从Python list & dict to a JSON string的转换:

from json import dumps

 items_dict = []
 for cart_item in cart_items:
            items_dict.append({
                "reference_id": f"{cart_item.sku}",
                "name": f"{cart_item.product.name}",
                "quantity": cart_item.quantity,
                "unit_amount": cart_item.product.price
             })

payload = {
    'items': items_dict
}

# And if you want a JSON string as output
print(dumps(payload))

但是在www.example.com中,“json”参数不需要字符串requests.post,因此可以保留

response = requests.request(
    "POST",
    url, 
    headers=headers,
    json=payload
)

相关问题