``JsonViewer`` displays a JSON file in a ``QTreeView``. Internally, it loads the contents of a file into a data structure via a string and uses it to populate a custom tree model with JsonItemModel. The JSON viewer demonstrates how to implement a custom item model inherited from ``QAbstractItemModel``. ``JsonViewer`` uses the top-level objects of the document as bookmarks for navigation. Other nodes (keys and values) can be added as additional bookmarks, or removed from the bookmark list. A ``QLineEdit`` is used as a search field to navigate through the JSON tree.