They are both just data formats. HTML, derived from XML, is a data format that can be read by the browser to display information to users; JSON is data format that can be read and written by almost every programming language, including JavaScript running on a server or in a the browser.
HTML is just as capable of storing data, for example microformats. In practice though, it is easier to use HTML to describe the contents of a web page for a user and JSON to exchange data between programs.
https://developer.mozilla.org/en-US/docs/Web/HTML/microforma...