[英]Parse JSON from CURL output using python
我正在嘗試獲取 id 的值,即“id”:59 ,它以 json 的形式出現在 curl 輸出中。 下面是 json 中的 curl 輸出:
[{"id":59,"description":"This is a demo project","name":"Demo_Project","name_with_namespace":"sam / Demo_Project","path":"demo_project","path_with_namespace":"sam/demo_project","created_at":"2020-03-02T08:43:13.664Z","default_branch":"master","tag_list":[],"ssh_url_to_repo":"ssh://git@od-test.od.com:2222/sam/demo_project.git","http_url_to_repo":"https://od-test.od.com/gitlab/sam/demo_project.git","web_url":"https://od-test.od.com/gitlab/sam/demo_project","readme_url":"https://od-test.od.com/gitlab/sam/demo_project/blob/master/README.md","avatar_url":null,"star_count":0,"forks_count":0,"last_activity_at":"2020-04-09T09:28:09.860Z","namespace":{"id":2259,"name":"sam","path":"sam","kind":"user","full_path":"sam","parent_id":null,"avatar_url":"https://secure.gravatar.com/avatar/755db8ssqaq50dcc9d189c53523b?s=80\u0026d=identicon","web_url":"https://od-test.od.com/gitlab/sam"}}]
我正在使用python來解析json並獲取id的值。 我已嘗試使用以下命令執行相同操作,但出現錯誤。
curl --header "PRIVATE-TOKEN: 9999ayayayar66" "https://od-test.od.com/gitlab/api/v4/search?scope=projects&search=demo_project" | python -c 'import sys, json; print(json.load(sys.stdin)["id"])'
錯誤:
誰能幫我正確的python命令來獲取id的值。 提前致謝。
JSON 包含一組對象,但您將其視為單個對象:
import sys, json; print(json.load(sys.stdin)["id"])
您基本上是在說“這是一組對象,請給我對象的 ID” 。 這沒有意義。
如果你假設你只想要數組中第一個對象的 ID,你可以使用這個:
import sys, json; print(json.load(sys.stdin)[0]["id"])
JSON 對象的根實際上是一個數組,因此您應該先從中取出第一項:
curl --header "PRIVATE-TOKEN: 9999ayayayar66" "https://od-test.od.com/gitlab/api/v4/search?scope=projects&search=demo_project" | python -c 'import sys, json; print(json.load(sys.stdin)[0]["id"])'
您必須編寫print(json.load(sys.stdin)[0]["id"])
因為 json 響應是字典列表,而不是字典。
由於您還標記了Python Requests ,您的 CURL 命令可以轉換為:
import requests
headers = {
'PRIVATE-TOKEN': '9999ayayayar66',
}
params = (
('scope', 'projects'),
('search', 'demo_project'),
)
response = requests.get('https://od-test.od.com/gitlab/api/v4/search', headers=headers, params=params)
然后您可以使用response.json()[0]["id"]
從JSON 響應內容中獲取 id 值。 這使用內置的 JSON 解碼器將 JSON 響應轉換為字典列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.