2016-10-26 8 views
1

Ich habe versucht, einen Dezimalwert mit einem String-Schlüssel zu serialisieren, aber bisher gelang es mir nur eine erfolgreiche 1 Dezimalziffer (wie '16 .1 ') zu machen. Ich habe versucht, beide json und simplejson Bibliotheken, Subklassen den Encoder, etc ....Serialize eine Dezimalstelle mit simplejson

Dies funktioniert:

jsonContent = json.dumps({"value": Decimal('15.4')}) 

Dies gilt nicht:

jsonContent = json.dumps({"value": Decimal('15.43')}) 

Nächste Schritte in meinem Code zu kodiere die jsonContent-Variable, auch wenn ich denke, dass sie nicht notwendig ist, da sie dieselbe Zeichenfolge zurückgibt und sie über den seriellen Bus sendet. Ich kann nicht verstehen, warum es mit einer Dezimalstelle funktioniert und nicht mit mehr ... Ich habe es auch mit round() und float versucht, was mit dem gleichen Ergebnis endet. Danke von Voraus.

+0

Seltsam, [_neither_ jener Arbeit für mich] (http://ideone.com/aoDFdl); Beide geben 'TypeError: [...] ist nicht JSON serializable'. Hast du etwas Spezielles gemacht, bevor du 15.4 serialisiert hast? – Kevin

+0

Eigentlich habe ich vergessen zu erwähnen, dass ich die Präzision von 28 auf 4 änderte, aber das ist für mich nicht relevant. Es scheitert nicht mit der SimpleJson-Bibliothek. – Dim17300

+0

Ich konnte dieses Problem in Python 3.5 oder Python 2.7 nicht reproduzieren - mit simplejson funktioniert immer, so dass ich nicht sicher bin, was das Problem ist. – sytech

Antwort

0

simplejson arbeitet, nur meine nächsten an Befehl, der nicht genug Eingangsdaten wurde die Annahme ... Sorry Leute und dank