Trouver une valeur dans le dictionnaire json imbriqué en python
Du json suivants, en python, je voudrais extraire la valeur "TEXTE". Toutes les touches sont constants, sauf pour les inconnus. Inconnu pourrait être n'importe quelle chaîne comme "a6784t66" ou "hobvp*enf". La valeur de l'inconnue n'est pas connuseulement qu'il sera dans cette position dans chaque réponse json.
{
"A": {
"B": {
"unknown": {
"1": "F",
"maindata": [
{
"Info": "TEXT"
}
]
}
}
}
}
une ligne json
'{"A":{"B":{"unknown":{"1":"F","maindata":[{"Info":"TEXT"}]}}}}'
Comment voulez-vous obtenir la valeur de "Texte"? (Je sais comment charger le json json.les charges)..mais je ne suis pas sûr de la façon d'obtenir la valeur de "Texte". Merci.
(Je ne suis pas sûr de ce que le meilleur titre est.)
source d'informationauteur user1959942
Vous devez vous connecter pour publier un commentaire.
C'est un peu lenghty, mais dans l'exemple ci-dessus:
En gros, vous avez le traiter comme un dictionnaire, en passant les clés pour obtenir les valeurs de chaque imbriquée dictionnaire. La seule autre partie est quand vous frappez
maindata
où la valeur est une liste de. Afin de gérer cela, nous tirez le premier élément[0]
et ensuite accéder à laInfo
clé pour obtenir la valeurTEXT
.Dans le cas de
unknown
changer, vous devez le remplacer avec une variable qui représente le "connue", nom qu'il prendra à ce point dans votre code:Et si j'aurais fait lire votre question correctement la première fois, si vous ne savez pas ce
unknown
est à tout moment, vous pouvez faire quelque chose comme ceci:Où
values()
est une variable contenant:Une simple liste d'éléments qui peuvent être accessibles avec
[0]
et ensuite vous pouvez procéder comme ci-dessus. Notez que cela dépend-il uniquement d'être un élément présent dans le dictionnaire - vous besoin d'ajuster un peu si il y avait plus.Comme vous l'avez dit que l'inconnue était, en un lieu fixe
Vous pouvez effectuer les opérations suivantes
Cela devrait faire l'affaire, puisque seule la clé inconnue est vraiment "inconnu"
Vous pouvez utiliser une fonction récursive de creuser à travers toutes les couches et de les imprimer sa valeur avec un tiret