Dict Decoding
The DictDecoder can be used to bind a dictionary or a list of dictionaries to data models. It's the backbone of the JsonParser without the loading entrypoints.
Single object
>>> from xsdata.formats.dataclass.context import XmlContext
>>> from xsdata.formats.dataclass.parsers import DictDecoder
>>> from xsdata.formats.dataclass.parsers.config import ParserConfig
>>> from tests.fixtures.books.books import BookForm
>>>
>>> config = ParserConfig()
>>> context = XmlContext()
>>> decoder = DictDecoder(context=context, config=config)
>>>
>>> data = {
... "author": "Hightower, Kim",
... "title": "The First Book",
... "genre": "Fiction",
... "price": 44.95,
... "pub_date": "2000-10-01",
... "review": "An amazing story of nothing.",
... "id": "bk001"
... }
>>> book = decoder.decode(data, BookForm)
>>> book.author
'Hightower, Kim'
List of objects
>>> from typing import List
>>> from tests.fixtures.books.books import BookForm
>>>
>>> data = [
... {
... "author": "Hightower, Kim",
... "title": "The First Book",
... "genre": "Fiction",
... "price": 44.95,
... "pub_date": "2000-10-01",
... "review": "An amazing story of nothing.",
... "id": "bk001"
... },
... {
... "author": "Nagata, Suanne",
... "title": "Becoming Somebody",
... "genre": "Biography",
... "price": None,
... "pub_date": None,
... "review": "A masterpiece of the fine art of gossiping.",
... "id": "bk002"
... }
... ]
>>> booklist = decoder.decode(data, List[BookForm])
>>> booklist[1].author
'Nagata, Suanne'