Ben bir zaman damgası ile bir OrderedDict kodlamak için python kullanıyorum ve sorunları yaşıyorum. Ben kodlamak çalışıyorum veri şuna benzer: python - OrderedDict ve Datetime ile json kullanarak
OrderedDict([('a', datetime.datetime(2015, 6, 15, 15, 58, 54, 884000)), ('b', 'b'), ('c', 'c'), ('d', 'd')])
bu json kodlanmış ve tam olarak aynı verileri almak için deşifre olmasını bekliyoruz.
Zaman damgasını doğrudan ISO veya Unix zamanına değiştirmeden kodlamak için, aşağıdaki gibi bson json_util arayüzünü kullandım. Doğru çalışıyor. da çalışır ben object_pairs_hook kullanılan bir OrderedDict, alabilmek için
json.dumps(str, default=json_util.default)
json.loads(jsonstr, object_hook=json_util.object_hook)
:
json.loads(x, object_pairs_hook=OrderedDict)
Ancak birlikte kullanıldıklarında, birbirleriyle ve sonuçla iki şey karmaşa doğru biçimde değil (Bson arayüzü zaman damgası için ekstra bir sözlük oluşturduğundan).
json.loads(jsonstr, object_hook=json_util.object_hook, object_pairs_hook=OrderedDict)
Bu sorgu, bu elde biter:
OrderedDict([(u'a', OrderedDict([(u'$date', 1434383934884L)])), (u'b', u'b'), (u'c', u'c'), (u'd', u'd')])
damgası doğru dışarı değil ayrıştırılır. Bunu nasıl doğru yapacağınıza dair herhangi bir öneriniz var mı? (Turşu bir yön olabilir ama önce başka çözümler arıyorum).
ne yapar '' json_util.object_hook'' çıktı? –
@JamesMills çıkışını '{"a": {"$ date": 1434383934884}, "b": "b", "c": "c", "d": "d"}'. Bu ekstra sözlük, object_pairs_hook tarafından OrderDict olarak ayrıştırıldı, böylece decode etmek için object_hook durdu. –
Yani UNIX Zaman Damgası olarak "' {"$ date" olarak kodlandı: ""} ''? –