Optimal JSON Content Type Selection

Which JSON content type should you use?

I have extensive experience working with various APIs, and I can tell you that JSON responses are typically dynamic, generated based on query parameters in the URL. For instance:

{
  "Name": "Foo",
  "Id": 1234,
  "Rank": 7
}

For such responses, the correct Content-Type is application/json. However, if you’re dealing with JSONP (JSON with padding), where the response is JSON data wrapped in a function call, you would have something like this:

functionCall({
  "Name": "Foo",
  "Id": 1234,
  "Rank": 7
});

In this case, the Content-Type should be application/javascript.

As someone who’s been in the field for over a decade, I agree that application/json is the correct Content-Type for JSON data. To elaborate, understanding the nuances of other MIME types is also crucial:

  • application/x-javascript: This was an experimental MIME type for JavaScript before application/javascript became the standard.

  • text/javascript: This is now obsolete, and application/javascript should be used instead.

  • text/x-javascript: Similar to application/x-javascript, this was an experimental MIME type.

  • text/x-json: This was an experimental MIME type for JSON before application/json was officially registered.

So, while application/json is the right choice, knowing the history and context of these MIME types can be helpful.

Drawing from my years of experience in web development, I want to add that if your JSON includes padding (JSONP), the correct Content-Type is application/jsonp. However, if it does not include padding, you should use application/json.

For handling both scenarios seamlessly, it’s often recommended to use application/javascript, regardless of whether the JSON is padded or not. This approach ensures compatibility and flexibility in various contexts.