Smart serialize of type object (#224)
* Smart serialize of type object * Added decimal type as object (#225) Co-authored-by: Bjerkelund <k.bjerkelund@wilhelmsen.com> Co-authored-by: Kristoffer <43015594+ludokriss@users.noreply.github.com> Co-authored-by: Bjerkelund <k.bjerkelund@wilhelmsen.com>
This commit is contained in:
Родитель
c16e5218fe
Коммит
209fa61faf
|
@ -953,6 +953,16 @@ class Serializer(object):
|
|||
return self.serialize_long(attr)
|
||||
if obj_type is unicode_str:
|
||||
return self.serialize_unicode(attr)
|
||||
if obj_type is datetime.datetime:
|
||||
return self.serialize_iso(attr)
|
||||
if obj_type is datetime.date:
|
||||
return self.serialize_date(attr)
|
||||
if obj_type is datetime.time:
|
||||
return self.serialize_time(attr)
|
||||
if obj_type is datetime.timedelta:
|
||||
return self.serialize_duration(attr)
|
||||
if obj_type is decimal.Decimal:
|
||||
return self.serialize_decimal(attr)
|
||||
|
||||
# If it's a model or I know this dependency, serialize as a Model
|
||||
elif obj_type in self.dependencies.values() or isinstance(attr, Model):
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
from decimal import Decimal
|
||||
import sys
|
||||
import json
|
||||
import isodate
|
||||
|
@ -1395,6 +1396,42 @@ class TestRuntimeSerialized(unittest.TestCase):
|
|||
'data': {'id': u"\ua015"}
|
||||
}
|
||||
|
||||
def test_datetime_types_as_type_object(self):
|
||||
"""https://github.com/Azure/msrest-for-python/issues/223
|
||||
"""
|
||||
|
||||
class TestModel(Model):
|
||||
_attribute_map = {'data': {'key': 'data', 'type': 'object'}}
|
||||
|
||||
m = TestModel(data = {
|
||||
'datetime': isodate.parse_datetime('2012-02-24T00:53:52.780Z'),
|
||||
'date': date(2019,5,1),
|
||||
'time': time(11,12,13),
|
||||
'timedelta': timedelta(56)
|
||||
})
|
||||
serialized = m.serialize()
|
||||
assert serialized['data'] == {
|
||||
'datetime': '2012-02-24T00:53:52.780Z',
|
||||
'date': '2019-05-01',
|
||||
'time': '11:12:13',
|
||||
'timedelta': 'P56D'
|
||||
}
|
||||
|
||||
def test_decimal_types_as_type_object(self):
|
||||
"""https://github.com/Azure/msrest-for-python/issues/223
|
||||
"""
|
||||
|
||||
class TestModel(Model):
|
||||
_attribute_map = {'data': {'key': 'data', 'type': 'object'}}
|
||||
|
||||
m = TestModel(data = {
|
||||
'decimal': Decimal('1.1'),
|
||||
})
|
||||
serialized = m.serialize()
|
||||
assert serialized['data'] == {
|
||||
'decimal': 1.1
|
||||
}
|
||||
|
||||
def test_json_with_xml_map(self):
|
||||
basic_json = {'age': 37, 'country': 'france'}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче