JSON: 'unicode' object has no attribute 'iteritems'

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
ich möchte daten von meinem Handy weiterverarbeiten...
von meinem handy aus empfange ich (verschickt mit out.write(json.toString());):

Code: Alles auswählen

data = {u'User' : u'Hans Hase', u'Datetime' : u'31.10.2016, 13:40 Uhr', u'Daten' : u'[[2, 0, Hans, Hase, 08.08.1999, 03.10.2016, 11, 0, aa, ab, ba, 1, bb, bc, cb], [2, 0, Hans, Hase, 08.08.1999, 04.10.2016, 122, 0, aaa, bbb, ccc, 1, ddd, eee, fff]]', u'Benutzung' : u'[[2, 0, Hans, Hase, 08.08.1999, 26127, Oldenburg, 03.10.2016, 11, 11:31 Uhr, 11:31 Uhr], [3, 0, Hans, Hase, 08.08.1999, 26127, Oldenburg, 04.10.2016, 12, 12:00 Uhr, 14:34 Uhr],[4, 0, Hans, Hase, 08.08.1999, 26127, Oldenburg, 04.10.2016, 12, 11:34 Uhr, 12:34 Uhr]]'}
die daten kommen an.
jetzt versuche ich in meinem servercode in python, die einzelnen listen von daten['Benutzung'] wieder ausgeben zu lassen :

Code: Alles auswählen

while True:

    client,addr = streamSock.accept()

    array = client.recv(1024)
    data  = json.loads(array)

    for einzellisten in data['Arbeitsliste']:
        print einzellisten
        
    client.close()

socket.close()
das funktioniert so nicht, da data ein string ist.
wie kann ich die in data['Benutzung'] enthaltenen einzelnen listen wieder so erhalten, wie ich sie verschickt habe?
Zuletzt geändert von Anonymous am Montag 31. Oktober 2016, 14:45, insgesamt 2-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@DMD-OL: Du hast da beim erstellen der Daten offenbar etwas durcheinander gebracht, denn Du hast innerhalb der JSON-serialisierten Daten bereits serialisierte Daten. Allerdings nicht JSON-serialisiert‽ Das sieht nicht gut aus.

Du solltest beim Sender wirklich alles in JSON serialisieren und das dann am besten auch nicht mehrstufig, sondern so, dass beim Empfänger *ein* deserialisieren ausreicht um alle Daten zu haben, und nicht so das der Empfänger innerhalb der serialisierten Daten noch mal Teile deserialisieren muss.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

???
BlackJack

@DMD-OL: In ``data['Benutzung']`` sind keine Listen. Das ist *eine* Zeichenkette. Und die enthält etwas was weder die Zeichenkettendarstellung einer Python-Liste ist, noch ist das gültiges JSON. Also was immer Du gemacht hast um beim Sender diese Zeichenkette zu erstellen: das ist ein Fehler.
Antworten