簡體   English   中英

使用 python 從 CURL 輸出中解析 JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM