diff --git a/coreapi/codecs/corejson.py b/coreapi/codecs/corejson.py index 37d312c..07481d9 100644 --- a/coreapi/codecs/corejson.py +++ b/coreapi/codecs/corejson.py @@ -39,7 +39,7 @@ def encode_schema_to_corejson(schema): 'description': schema.description } if isinstance(schema, coreschema.Enum): - retval['extra'] = {'enum': schema.enum} + retval['enum'] = schema.enum return retval @@ -47,7 +47,11 @@ def decode_schema_from_corejson(data): type_id = _get_string(data, '_type') title = _get_string(data, 'title') description = _get_string(data, 'description') - extra = _get_dict(data, 'extra') + + extra = {} + if type_id == 'enum': + extra['enum'] = _get_list(data, 'enum') + schema_cls = TYPE_ID_TO_SCHEMA_CLASS.get(type_id, coreschema.Anything) return schema_cls(title=title, description=description, **extra) diff --git a/tests/test_codecs.py b/tests/test_codecs.py index 7529aa9..32458cd 100644 --- a/tests/test_codecs.py +++ b/tests/test_codecs.py @@ -63,7 +63,7 @@ def test_document_to_primitive(doc): '_type': 'enum', 'title': '', 'description': '', - 'extra': {'enum': ['a', 'b', 'c']}, + 'enum': ['a', 'b', 'c'], }, }, ]}, @@ -101,7 +101,7 @@ def test_primitive_to_document(doc): '_type': 'enum', 'title': '', 'description': '', - 'extra': {'enum': ['a', 'b', 'c']}, + 'enum': ['a', 'b', 'c'], }, }, ],