Pages : 1
#1 Le 25/11/2023, à 10:53
- lebossejames
python api reponse parsing json
Bonjour,
Je souhaiterais savoir si cela est possible de chercher chaque valeur pour chaque key sur un fichier .json quelque soit l'endroit où il se trouve sans connaitre l'emplacement par avance de la key:
listKeys=["id","name","adress","city"]
f=open('source.json')
json_data=json.load(f)
Merci d'avance.
Dernière modification par lebossejames (Le 25/11/2023, à 10:54)
Hors ligne
#2 Le 25/11/2023, à 12:44
- Nuliel
Re : python api reponse parsing json
Bonjour,
json.load te retourne un dictionnaire. Donc tu peux faire ce que tu veux avec ce dico. Tu as l'air de parler d'ordre, c'est à partir de python 3.7 que les dictionnaires sont ordonnés.
Tu veux faire ça:
import json
some_json = '{ "name":"John", "age":30, "city":"New York"}'
dico = json.loads(some_json)
for key, value in dico.items():
print(key, value)
nuliel@nuliel-Latitude-E7270:~/heapLAB/HeapLAB$ python3 test_python.py
name John
age 30
city New York
?
Si non, je veux bien que tu reprécises ta question.
Edit: sinon tu as d.values() pour lister toutes les valeurs, et d.keys() pour lister les clés
Dernière modification par Nuliel (Le 25/11/2023, à 12:55)
Hors ligne
#3 Le 25/11/2023, à 17:04
- lebossejames
Re : python api reponse parsing json
J'ai essayé à partir d'un fichier
dico = json.loads(some_json)
for key, value in dico.items():
print(key, value)
J'obtiens comme erreur "raise TypeError (f' the JSON object must be str,bytes or bytearray"
[
{
"orders": [
{
"size": "medium",
"price": 15.67,
"toppings": [
"mushrooms",
"pepperoni",
"basil"
],
"extra_cheese": false,
"delivery": true,
"client": {
"name": "Jane Doe",
"phone": null,
"email": "janedoe@email.com"
}
},
{
"size": "small",
"price": 6.54,
"toppings": null,
"extra_cheese": true,
"delivery": false,
"client": {
"name": "Foo Jones",
"phone": "556-342-452",
"email": null
}
}
]
},
{
"orders": [
{
"size": "medium",
"price": 15.67,
"toppings": [
"mushrooms",
"pepperoni",
"basil"
],
"extra_cheese": false,
"delivery": true,
"client": {
"name": "Jane Doe",
"phone": null,
"email": "janedoe@email.com"
}
},
{
"size": "small",
"price": 6.54,
"toppings": null,
"extra_cheese": true,
"delivery": false,
"client": {
"name": "Foo Jones",
"phone": "556-342-452",
"email": null
}
}
]
}
]
Dernière modification par lebossejames (Le 25/11/2023, à 17:35)
Hors ligne
#4 Le 26/11/2023, à 15:41
- Nuliel
Re : python api reponse parsing json
Si tu mets ton json dans une variable, il faut mettre sous la forme
mavar = """
json
"""
Sinon, en reprenant ton fichier et en utilisant load:
import json
with open("ex_json.json", "r") as f:
dico = json.load(f)
for i in range(len(dico)):
for key, value in dico[i].items():
print(key, value)
J'ai fait deux boucles imbriquées vu que tu as une liste de dictionnaires
Le résultat que j'ai:
orders [{'size': 'medium', 'price': 15.67, 'toppings': ['mushrooms', 'pepperoni', 'basil'], 'extra_cheese': False, 'delivery': True, 'client': {'name': 'Jane Doe', 'phone': None, 'email': 'janedoe@email.com'}}, {'size': 'small', 'price': 6.54, 'toppings': None, 'extra_cheese': True, 'delivery': False, 'client': {'name': 'Foo Jones', 'phone': '556-342-452', 'email': None}}]
orders [{'size': 'medium', 'price': 15.67, 'toppings': ['mushrooms', 'pepperoni', 'basil'], 'extra_cheese': False, 'delivery': True, 'client': {'name': 'Jane Doe', 'phone': None, 'email': 'janedoe@email.com'}}, {'size': 'small', 'price': 6.54, 'toppings': None, 'extra_cheese': True, 'delivery': False, 'client': {'name': 'Foo Jones', 'phone': '556-342-452', 'email': None}}]
Dernière modification par Nuliel (Le 26/11/2023, à 15:42)
Hors ligne