Ich speichere das folgende einfache, gültige JSON-Objekt in einem Modell in meiner Django-App:
{
"start_date": 1311471044.24338
"post_count": 25
}
Das Modell sieht folgendermaßen aus:
from django.db import models
from django_extensions.db.fields import json as json
class UserProfile(models.Model):
data = json.JSONField()
Um die geposteten Daten zu lesen, mache ich grundsätzlich
posted_data = request.FILES.get('posted_data').read()
json_data = simplejson.loads(posted_data)
Die Daten enthalten dann den erwarteten Typ (Float)
logging.debug( "start_date type: " + str(type(json_data.get('start_date'))))
logging.debug( "post_count type: " + str(type(json_data.get('post_count'))))
>> 2011-07-24 10:03:01,636 DEBUG start_date type: <type 'float'>
>> 2011-07-24 10:03:01,636 DEBUG post_count type: <type 'int'>
Ich speichere die Daten dann wie folgt:
user_profile.data = json_data
user_profile.save()
und dann lese ich die Daten zurück, Ganzzahlen sind in Ordnung, aber Fließkommazahlen werden z. B. angegeben:
print user_profile.data
{
"post_count : 25
"start_date": "1311471044.24338"
}
Wie kann ich verhindern, dass Fließkommazahlen unnötigerweise in Zeichenketten umgewandelt werden?
Edit :
Vielleicht haben Sie hier eine Erklärung gefunden: Rails JSON Serialisierung von Decimal fügt Anführungszeichen
Ich wäre aber trotzdem an anderen Erklärungen interessiert.