Json und Dict ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

Hallo,

ich baue mir gerade einen String mittels Json nach folgendem Schema zusammen, um diesen dann zu übertragen.

Code: Alles auswählen

string = {"ecz" : s, "typ" : traegertyp} ...
string.update({"x" : x, "x_verfeinert" : x_verfeinert, "y" : zp, "k" : k, "zo" : zo, "zu" : zu, "cnomo" : cnomo, "cnomu" : cnomu, "spanngliedtyp" : spanngliedtyp, "x_zp_max_1" : x_zp_max_1, "x_wp1" : x_wp1, "x_wp2" : x_wp2, "x_zp_max_2" : x_zp_max_2, "l1" : l1, 'm' : m })
      
      string = urllib.quote(json.dumps(string, skipkeys=True))
Dabei befinden sich dann u. A. auch Arrays in dem Dictonary.

Schicke ich diesen dann ab, kommt es zu folgendem Fehler der mit in bottle ausgegeben wird.
File "/usr/lib/python2.6/json/encoder.py", line 344, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6,
1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4,
3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8, 5. , 5.2,
5.4, 5.6, 5.8, 6. , 6.2, 6.4, 6.6, 6.8, 7. ,
7.2, 7.4, 7.6, 7.8, 8. , 8.2, 8.4, 8.6, 8.8,
9. , 9.2, 9.4, 9.6, 9.8, 10. ]) is not JSON serializable
Kann mir bitte jemand einen Ansatz nennen wie ich den Fehler beheben kann?

Gruß
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Also ein Dictionary an den Namen `string` zu binden ist schon ...

JSON kann nunmal keine Numpy-Arrays serialisieren. Du koenntest stattdessen das Array als Liste serialisieren.
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

cofi hat geschrieben:Also ein Dictionary an den Namen `string` zu binden ist schon ...
:mrgreen: sollte ich wohl besser umbenennen :wink:

Aber ansonsten vielen Dank. Aus irgend einem Grund hatte ich die Zeile

x_verfeinert = x_verfeinert.tolist()

vergessen :oops:
Antworten