贝宝:Python来袭JSON请求未映射到API请求

2024-05-16 19:11:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的网站集成贝宝sdk使用贝宝python sdk。手动键入项目列表时,如下所示:

{"name": "Sparzy", "sku": "music beat", "price": "25.0", "currency": "USD", "quantity": 1}

但当我尝试以变量的形式添加它时,例如

itemlist = {"name": "Sparzy", "sku": "music beat", "price": "25.0", "currency": "USD", "quantity": 1}

我得到以下错误:

Payment Error: {u'message': u'Incoming JSON request does not map to API request', u'debug_id': u'394fa35b1b301', u'name': u'MALFORMED_REQUEST', u'information_link': u'https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST'}

我真的需要它作为一个变量,这样当用户向购物车添加producs时,我就可以动态生成列表。谢谢你的帮助。你知道吗


Tags: namedeveloper列表requestmusicsdkpricecurrency
1条回答
网友
1楼 · 发布于 2024-05-16 19:11:44

我想你是想用dictonnary作为JSON。这两种语法都很相似,但dictionnaries是Python结构,而JSON是一种数据格式。你知道吗

在你说的评论中使用你的itemlist措辞,比如:

"transactions": [{
    "item_list": { "items": [ itemlist ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}]

如果这是要发送的entiere JSON数据,可以执行以下操作:

dict_data = "transactions": [{
    "item_list": { "items": [ itemlist ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}])
json_data = json.dumps(dict_data)

json.dumps()获取一个结构并用JSON格式的字符串解析它。 如果您正在执行以下操作:

json_data = "transactions": [{
    "item_list": { "items": [ json.dumps(itemlist) ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}])

你错了,因为元素transacations:item_list将是字符串的列表,而不是dict的列表。 理解JSON只是格式化结构的一种方式是很重要的,您可以通过示例以完全相同的方式在XML中解析dict。你知道吗

因此,请确保首先计算要以字典形式发送的数据,然后在最后,以JSON字符串形式解析整个数据。你知道吗

相关问题 更多 >