- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
primitive_types = [
str,
int,
float,
bool,
tuple,
list,
set,
dict,
complex
]
def is_primitive(value):
return value.__class__ in primitive_types
def to_json(obj, deep_scan=False):
json = dict()
for name in dir(obj):
# Skip private, protected and not serializable attributes
not_serializable = (
name.startswith('_') or
not isinstance(getattr(type(obj), name, None), json_property)
)
if not_serializable:
continue
# Get value of current property
value = getattr(obj, name)
# It's primitive value or None
if value is None or is_primitive(value):
json[name] = value
# It's date
elif isinstance(value, (datetime, date)):
if isinstance(value, date):
value = datetime.combine(value, datetime.min)
json[name] = value.timestamp()
# It's collection
elif deep_scan and isinstance(value, List):
json[name] = list()
for item in value:
json_item = to_json(item)
if len(json_item):
json[name].append(json_item)
# It's another object
elif deep_scan:
json[name] = to_json(value)
return json
Не в первый раз непонятные мысли автора. Но что он хотел сделать в строках 34-36 ко мне не дойдет. Может это просто опечатка
bormand 13.11.2014 22:10 # 0
P.S. А, тьфу, тут же прям произвольные объекты сериализуют.
wvxvw 14.11.2014 00:24 # 0
wvxvw 14.11.2014 00:30 # 0
kissarat 14.11.2014 00:37 # 0
wvxvw 14.11.2014 01:16 # +2
Если бы это выглядело так:
Мы получили бы что-то вроде:
1415829600 и 1415915899, что аналогично Thu Nov 13 2014 00:00:00 GMT+0200 (IST) и Thu Nov 13 2014 23:58:19 GMT+0200 (IST) в моем случае. Т.е. Логика кода выше в том, чтобы просто добавить нулей к дате, чтобы получить скомбинированую дату и время, очевидно для единообразия, но судя по всему этот код ни разу не запускался, поэтому его скорее всего можно просто выбросить :)