在 Python 中动态构建 JSON [关闭]
Posted
技术标签:
【中文标题】在 Python 中动态构建 JSON [关闭]【英文标题】:Dynamically build JSON in Python [closed] 【发布时间】:2021-12-17 23:10:18 【问题描述】:我需要在 Python 中动态构建 JSON 结构,然后将其传递给 API。结构如下:
"list_name" : "listname0001,listname0002,listname0003",
"subscriptions" :
[
"first_name" : "Subscriber's First Name",
"last_name" : "Subscriber's Last Name",
"email" : "subscriber_email0001@api.trumpia.com",
"mobile" :
"number" : "2003004000",
"country_code" : "1"
]
在尝试正确执行此操作时遇到问题。我确信 Python 有一个 JSON 对象,只是不确定如何使用变量和数组等动态构建它。
任何帮助都会很棒!
【问题讨论】:
“动态构建”从什么开始?你有 json 作为文件吗? 似乎“动态”是指python脚本 你构建匹配的 Python 数据结构并使用json.dumps()
。
是的,尝试用 Python 编写。并且数据是动态的,因此循环并从数组中读取并将这些值放入 JSON 结构中。
真的不清楚你在问什么。
【参考方案1】:
如果你有字典,你可以通过调用来打印 JSON:
import json
print(json.dumps(data, indent=4)) # indent=4 for better formatting
否则,您将不得不通过输入以下内容来构建自己的字典和数组的组合:
data =
"list_name" : "listname0001,listname0002,listname0003",
"subscriptions" :
[
"first_name" : "Subscriber's First Name",
"last_name" : "Subscriber's Last Name",
"email" : "subscriber_email0001@api.trumpia.com",
"mobile" :
"number" : "2003004000",
"country_code" : "1"
]
你也可以只使用变量:
data =
"list_name" : ",".join(list_name),
"subscriptions" :
[
"first_name" : first_name,
"last_name" : last_name,
"email" : email,
"mobile" :
"number" : mobile_number,
"country_code" : mobile_country_code
]
【讨论】:
【参考方案2】:您可以创建一个辅助函数以使用必要的结构动态填充 dict
对象中的值:
from __future__ import annotations
def build_api_request(names: list[str],
first: str, last: str,
email: str,
mobile_no: str,
country_code: str | int):
return
"list_name": ','.join(names),
"subscriptions": [
"first_name": first,
"last_name": last,
"email": email,
"mobile": "number": mobile_no,
"country_code": str(country_code)
]
req = build_api_request(["listname0001", "listname0002", "listname0003"],
"Subscriber's First Name",
"Subscriber's Last Name",
"subscriber_email0001@api.trumpia.com",
"2003004000",
1)
import json
print(json.dumps(req, indent=2))
打印:
"list_name": "listname0001,listname0002,listname0003",
"subscriptions": [
"first_name": "Subscriber's First Name",
"last_name": "Subscriber's Last Name",
"email": "subscriber_email0001@api.trumpia.com",
"mobile":
"number": "2003004000",
"country_code": "1"
]
【讨论】:
这似乎有效。非常感谢!! @LandonStatis 没问题,很高兴它有帮助。如果您觉得有帮助,请随时 accept 回复。【参考方案3】:在 JSON 中, 是一个类或一个字典,而 [] 是一个数组。 最简单的做法是创建一个字典,添加第一级字段,如果任何值是数组,则添加列表值,如果任何值是对象/字典,则添加 dict 值。
当你有兼容的结构时,将其序列化为 json。 尝试搜索“python serialize to json”以获取示例,或者如果您尝试了某些方法但失败了,请发布您的代码以寻求帮助。
【讨论】:
一堂课?不,你是说列表吗? 我写的是我的意思。 JSON 类型(JSON = javascript Object Notation)有不同的名称。在 Python 中,正如我后来写的那样——如果你继续阅读,你可以使用 dict 和 list(或者创建一个类来序列化它)。 JSON 对象几乎从未从类对象中序列化。你说“数组”不是列表。 也许你的意思是类的实例 ...但这不是很有帮助... 一切都是一个类的实例 @juanpa.arrivillaga 在这里讨论没有意义。您使用所需的字段定义一个简单的类(例如 Java 中的 POJO),实例化它(因此创建一个对象)并为其提供值(例如通过构造函数)。如果你有一个固定的结构,这很好。如果您有任何后续问题,请提出问题,不要在这里发表评论。我建议您尝试一些其他语言,而不仅仅是 Python 来扩展您的工具集。以上是关于在 Python 中动态构建 JSON [关闭]的主要内容,如果未能解决你的问题,请参考以下文章