JavaScript Object Notation is a format for transporting data. Typically, it is used to communicate data between software. Scenarios include an API sending data to a program which has requested it, or a client side script, sending JSON data to be processed by a server side script.
As you may have guessed from the name, the formatting for JSON data is derived from the syntax used for objects in JavaScript. This makes JSON easy to manipulate with JavaScript and nowadays most programming languages have functionality for manipulating JSON or converting it to a native object. An example of JSON is:
{ "firstName": "James", "lastName": "Jones", "guitars": [ "Parker Fly", "Ibanez Iceman", "Ibanez Talman" ] }
Before JSON the most popular data transport format was XML. JSON has largely usurped XML in the role of transporting data, due to its compatibility with programming languages, and the fact that data encapsulated in JSON is a smaller file than the equivalent data encapsulated in XML. Despite this, XML does still see significant use.
Read more about JSON at these resources: