Before we start, let's define what we are talking about when we say structured and unstructured data. The former, structured data, follows a schema of some sorts—like a table schema in an SQL database. Unstructured data, on the other hand, is unpredictable in what it will contain. In the most extreme example, a body of prose text is the least structured thing we could probably come up with—each sentence may follow different rules depending on its content.
JSON is a bit more readable, but unstructured, nevertheless. An object can have properties of various data types and no two objects have to be the same. In this chapter, we are going to explore some of the ways JSON (and other formats) can be handled when it doesn't follow a schema that we can declare in a struct.