【发布时间】:2022-01-19 13:38:51
【问题描述】:
我在 python 中创建 JSON 数组并将其返回给 PHP 时遇到了一些麻烦。
现在我有一个 PHP 页面,它像这样调用 Python 脚本:
$output1 = shell_exec("cd .. && cd python/pyjira && pipenv run py PyJira/Jira.py");
var_dump($output1);
python 脚本创建一些 JSON 打印
if __name__ == "__main__":
jira = Jira()
data = {}
fields = jira.get_fields()
jql_issues = jira.get_jql_search_issues(jql_search="project = SWAT AND resolution = Unresolved ORDER BY priority DESC, updated DESC")
for issue in jql_issues:
data['key'] = issue.key
data['assignee'] = issue.fields.assignee.display_name
print(json.dumps(data))
exit
python 的输出
{"key": "SWAT-107", "assignee": "Unassigned"}
{"key": "SWAT-98", "assignee": "Unassigned"}
{"key": "SWAT-100", "assignee": "Unassigned"}
{"key": "SWAT-97", "assignee": "Unassigned"}
{"key": "SWAT-75", "assignee": "Unassigned"}
{"key": "SWAT-129", "assignee": "Unassigned"}
这是来自 PHP 的 var_dump(...);,在这里您可以看到它是单个字符串中的多个 JSON
"{"key": "SWAT-107", "assignee": "Unassigned"} {"key": "SWAT-98", "assignee": "Unassigned"} {"key": "SWAT-100", "assignee": "Unassigned"} {"key": "SWAT-97", "assignee": "Unassigned"} {"key": "SWAT-75", "assignee": "Unassigned"} {"key": "SWAT-129", "assignee": "Unassigned"} "
有没有办法让 python 一个一个地返回 JSON 对象,所以我可以在 PHP 中循环它们,然后只做data['key'] 等?
我知道当我只有一个像 {"key": "SWAT-107", "assignee": "Unassigned"} 这样的 JSON 时,我只需要在 PHP 中 json_decode(...)_; 它。
更新
正如评论所建议的,我现在尝试从 python 返回一个数组,并在 PHP 网站上获取:
"['{"key": "SWAT-106", "assignee": "Unassigned"}', '{"key": "SWAT-107", "assignee": "Unassigned"}', '{"key": "SWAT-98", "assignee": "Unassigned"}', '{"key": "SWAT-100", "assignee": "Unassigned"}', '{"key": "SWAT-97", "assignee": "Unassigned"}', '{"key": "SWAT-75", "assignee": "Unassigned"}', '{"key": "SWAT-129", "assignee": "Unassigned"}'] "
我怎样才能把它变成一个数组?
【问题讨论】:
-
分别返回每个 JSON 对象需要做什么?现在它单独打印每个,每个之间都有一个换行符。你还想要什么?
-
为什么不返回一个 JSON 数组呢?
[{"key": "somevalue", "assignee": "othervalue"}, {"key": "value", "assignee": "anothervalue"}]。那你可以json_decode就好了。 -
@mark_b 感谢您的建议,查看更新的字段,格式现在是一个数组,但它仍然是一个字符串,我该如何从 string->array
-
请勿发帖pictures of output,请以文字形式发帖。
-
@berend 现在改了