AttributeError: 'unicode' objet n'a pas d'attribut "valeurs" lors de l'analyse JSON dictionnaire des valeurs
J'ai le texte suivant JSON dictionnaire:
{
u'period': 16, u'formationName': u'442', u'formationId': 2,
u'formationSlots': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0],
u'jerseyNumbers': [1, 20, 3, 15, 17, 5, 19, 6, 18, 25, 10, 2, 4, 12, 16, 22, 24,
34],
u'playerIds': [23122, 38772, 24148, 39935, 29798, 75177, 3860, 8505,
26013, 3807, 34693, 18181, 4145, 23446, 8327, 107395, 29762, 254558],
u'captainPlayerId': 29798,
u'startMinuteExpanded': 0,
u'endMinuteExpanded': 82,
u'formationPositions': [{u'horizontal': 5.0, u'vertical': 0.0},
{u'horizontal': 1.0, u'vertical': 2.5}, {u'horizontal': 9.0, u'vertical': 2.5},
{u'horizontal':3.5, u'vertical': 6.0}, {u'horizontal': 3.5, u'vertical': 2.5},
{u'horizontal': 6.5, u'vertical': 2.5}, {u'horizontal': 1.0, u'vertical': 6.0},
{u'horizontal': 6.5, u'vertical': 6.0}, {u'horizontal': 6.5, u'vertical': 9.0},
{u'horizontal': 3.5, u'vertical': 9.0}, {u'horizontal': 9.0, u'vertical': 6.0}]
}
Comme vous pouvez voir quelques-uns des dictionnaire les valeurs sont contenues dans les listes. Je suis en train d'essayer d'obtenir toutes les valeurs de cet objet par programmation comme suit:
for myvalue in myjsonobject:
print mydict
for mysubvalue in myvalue:
print mysubvalue
Ce imprime le dictionnaire clés:
period
formationName
formationId
formationSlots
jerseyNumbers
playerIds
captainPlayerId
startMinuteExpanded
endMinuteExpanded
formationPositions
Quand ce que je veux c'est les valeurs. J'ai essayé de remplacer la ligne d'impression mysubvalue
avec impression mysubvalue.values()
, cependant, cela provoque l'erreur suivante:
Traceback (most recent call last):
File "C:\Python27\counter.py", line 78, in <module>
print mysubdict.values()
AttributeError: 'unicode' object has no attribute 'values'
Je vais prendre une supposition ici que je n'ai pas besoin d'utiliser json.loads(mysubdict)
pour me permettre un accès à la .values()
fonction. Si oui, je ne sais pas pourquoi j'obtiens cette erreur.
Quelqu'un peut-il aider?
Grâce
OriginalL'auteur gdogg371 | 2015-01-16
Vous devez vous connecter pour publier un commentaire.
Si vous parcourez le dictionnaire lui-même (pour mavaleur dans myjsonobject), vous serez itération sur les clés du dictionnaire. Si la boucle avec une boucle for, le comportement sera le même si vous en boucle sur la
dict
(myjsonobject) lui-même,myjsonobject.keys()
, oumyjsonobject.iterkeys()
.dict.iterkeys()
est généralement préférable parce qu'elle est explicite et efficace:for myvalue in myjsonobject.iterkeys():
OriginalL'auteur Ranvijay Sachan
Vous êtes une itération sur les clés du dictionnaire JSON, puis en l'appelant .les valeurs de() sur chaque touche.
itère sur les touches. Ainsi, lorsque vous obtenez une clé est une chaîne de caractères, disons, u'period' : 16, il va imprimer "de la période".les valeurs de(), qui crache que l'erreur que la classe string possède pas .les valeurs de().
Si vous voulez aplatir l'ensemble du JSON dictionnaire à une profondeur arbitraire, je propose une approche récursive.
OriginalL'auteur Andrew