Home What is the correct JSON content type?
Reply: 29

# What is the correct JSON content type?

Oli
1#
Oli Published in 2009-01-25 15:25:19Z
 I've been messing around with JSON for some time, just pushing it out as text and it hasn't hurt anybody (that I know of), but I'd like to start doing things properly. I have seen so many purported "standards" for the JSON content type: application/json application/x-javascript text/javascript text/x-javascript text/x-json  But which is correct, or best? I gather that there are security and browser support issues varying between them. I know there's a similar question, What MIME type if JSON is being returned by a REST API?, but I'd like a slightly more targeted answer.
Håken Lid
2#
Håken Lid Reply to 2018-02-24 00:12:58Z
 For JSON text: The MIME media type for JSON text is application/json. The default encoding is UTF-8. (Source: RFC 4627). For JSONP with callback: application/javascript Here are some blog posts that were mentioned in the comments that are relevant. Why you shouldn't use text/html for JSON Internet Explorer sometimes has issues with application/json A rather complete list of Mimetypes and what to use them for
Amal Murali
3#
Amal Murali Reply to 2014-05-27 02:38:18Z
 If you're calling ASP.NET Web Services from the client-side you have to use application/json for it to work. I believe this is the same for the jQuery and Ext frameworks.
John Odom
4#
John Odom Reply to 2015-05-04 22:37:14Z
 Of course, the correct MIME media type for JSON is application/json, but it's necessary to realize what type of data is expected in your application. For example, I use Ext GWT and the server response must go as text/html but contains JSON data. Client side, Ext GWT form listener uploadForm.getForm().addListener(new FormListenerAdapter() { @Override public void onActionFailed(Form form, int httpStatus, String responseText) { MessageBox.alert("Error"); } @Override public void onActionComplete(Form form, int httpStatus, String responseText) { MessageBox.alert("Success"); } });  In case of using application/json response type, the browser suggests me to save the file. Server side source code snippet using Spring MVC return new AbstractUrlBasedView() { @SuppressWarnings("unchecked") @Override protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html"); response.getWriter().write(json); } }; 
Gowtham Subramaniam
5#
Gowtham Subramaniam Reply to 2017-01-17 20:53:54Z
 IANA has registered the official MIME Type for JSON as application/json. When asked about why not text/json, Crockford seems to have said JSON is not really JavaScript nor text and also IANA was more likely to hand out application/* than text/*. More resources: Media Types Request for Comments 4627 bluesmoon: JSON has a type
Umpa
6#
Umpa Reply to 2014-06-30 16:56:26Z
 If you are using Ubuntu or Debian and you serve .json files through Apache, you might want to serve the files with the correct content type. I am doing this primarily because I want to use the Firefox extension JSONView The Apache module mod_mime will help to do this easily. However, with Ubuntu you need to edit the file /etc/mime.types and add the line application/json json  Then restart Apache: sudo service apache2 restart 
Holger Just
7#
Holger Just Reply to 2013-08-02 15:53:02Z
 Not everything works for content type application/json. If you are using Ext JS form submit to upload file, be aware that the server response is parsed by the browser to create the document for the 
Michael Berkowski
8#
Michael Berkowski Reply to 2013-07-25 15:52:33Z
 Only when using application/json as the MIME type I have the following (as of November 2011 with the most recent versions of Chrome, Firefox with Firebug): No more warnings from Chrome when the JSON is loaded from the server. Firebug will add a tab to the response showing you the JSON data formatted. If the MIME type is different, it will just show up as 'Response content'.
Amal Murali
9#
Amal Murali Reply to 2014-05-27 02:39:25Z
 The right content type for JSON is application/json UNLESS you're using JSONP, also known as JSON with Padding, which is actually JavaScript and so the right content type would be application/javascript.
user5649133
10#
user5649133 Reply to 2017-11-09 08:31:59Z
 There is no doubt that application/json is the best MIME type for a JSON response. But I had some experience where I had to use application/x-javascript because of some compression issues. My hosting environment is shared hosting with GoDaddy. They do not allow me to change server configurations. I had added the following code to my web.config file for compressing responses.   By using this, the .aspx pages was compressed with g-zip but JSON responses were not. I added   in the static and dynamic types sections. But this does not compress JSON responses at all. After that I removed this newly added type and added   in both the static and dynamic types sections, and changed the response type in .ashx (asynchronous handler) to application/x-javascript  And now I found that my JSON responses were compressed with g-zip. So I personally recommend to use application/x-javascript  only if you want to compress your JSON responses on a shared hosting environment. Because in shared hosting, they do not allow you to change IIS configurations.
Emanuele Del Grande
11#
Emanuele Del Grande Reply to 2013-02-23 15:37:55Z
 If you're in a client-side environment, investigating about the cross-browser support is mandatory for a well supported web application. The right HTTP Content-Type would be application/json, as others already highlighted too, but some clients do not handle it very well, that's why jQuery recommends the default text/html.
djv
12#
djv Reply to 2014-12-11 16:48:17Z
 JSON is a domain-specific language (DSL) and a data format independent of JavaScript, and as such has its own MIME type, application/json. Respect for MIME types is of course client driven, so text/plain may do for transfer of bytes, but then you would be pushing up interpretation to the vendor application domain unnecessarily - application/json. Would you transfer XML via text/plain? But honestly, your choice of MIME type is advice to the client as to how to interpret the data- text/plain or text/HTML (when it's not HTML) is like type erasure- it's as uninformative as making all your objects of type Object in a typed language. No browser runtime I know of will take a JSON document and automatically make it available to the runtime as a JavaScript accessible object without intervention, but if you are working with a crippled client, that's an entirely different matter. But that's not the whole story- RESTful JSON services often don't have JavaScript runtimes, but it doesn't stop them using JSON as a viable data interchange format. If clients are that crippled... then I would consider perhaps HTML injection via an Ajax templating service instead. Application/JSON!
Amal Murali
13#
Amal Murali Reply to 2014-05-27 02:35:38Z
 For JSON: Content-Type: application/json  For JSON-P: Content-Type: application/javascript 
Peter Mortensen
14#
Peter Mortensen Reply to 2014-11-22 11:11:31Z
 The correct answer is: Content-Type: application/json 
raja
15#
raja Reply to 2014-08-05 07:08:05Z
 In JSP, you can use this in page directive: <%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>  The correct MIME media type for JSON is application/json. JSP will use it for sending a response to the client.
George Stocker
16#
George Stocker Reply to 2014-02-25 17:59:57Z
 “application/json” is the correct JSON content type. def ajaxFindSystems = { def result = Systems.list() render(contentType:'application/json') { results { result.each{sys-> system(id:sys.id, name:sys.name) } } resultset (rows:result.size()) } } 
Bhavik Kama
17#
Bhavik Kama Reply to 2014-08-01 13:09:43Z

## JSON:

Response is dynamically generated data, according to the query parameters passed in the URL.

Example:

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


Content-Type: application/json

## JSON-P:

JSON with padding. Response is JSON data, with a function call wrapped around it.

Example:

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


Content-Type: application/javascript

Jhoverit
18#
Jhoverit Reply to 2015-08-17 20:05:26Z
 As many others have mentioned, application/json is the correct answer. But what haven't been explained yet is what the other options you proposed mean. application/x-javascript: Experimental MIME type for JavaScript before application/javascript was made standard. text/javascript: Now obsolete. You should use application/javascript when using javascript. text/x-javascript: Experimental MIME type for the above situation. text/x-json: Experimental MIME type for JSON before application/json got officially registered. All in all, whenever you have any doubts about content types, you should check this link
George Stocker
19#
George Stocker Reply to 2014-02-25 17:59:47Z
 The right MIME type is application/json BUT I experienced many situations where the browser type or the framework user needed: text/html application/javascript 
D_D
20#
D_D Reply to 2013-05-17 09:52:13Z
 I use the below contentType: 'application/json', data: JSON.stringify(SendData), 
Peter Mortensen
21#
Peter Mortensen Reply to 2013-07-10 22:16:37Z
 If the JSON is with padding then it will be application/jsonp. If the JSON is without padding then it will be application/json. To deal with both, it is a good practice to use: 'application/javascript' without bothering whether it is with padding or without padding.
Peter Mortensen
22#
Peter Mortensen Reply to 2013-07-10 22:17:11Z
 In Spring you have a defined type: MediaType.APPLICATION_JSON_VALUE which is equivalent to application/json.
Alexander Burakevych
23#
Alexander Burakevych Reply to 2013-08-09 10:49:18Z
 The Content-Type header should be set to 'application/json' when posting. Server listening for the request should include "Accept=application/json". In Spring MVC you can do it like this: @RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json")  Add headers to the response: HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); 
Jhoverit
24#
Jhoverit Reply to 2016-01-04 20:27:18Z
 The IANA registration for application/json says Applications that use this media type: JSON has been used to exchange data between applications written in all of these programming languages: ActionScript, C, C#, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Scala, and Scheme. You'll notice that IANA.org doesn't list any of these other media types, in fact even application/javascript is now obsolete. So application/json is really the only possible correct answer. Browser support is another thing. The most widely supported non-standard media types text/json or text/javascript. But some big names even use text/plain. Even more strange is the Content-Type header sent by Flickr, who returns a JSON string with text/xml. Google example included as well, responding with text/html yet a JSON string. Examples: curl -I http://ajax.googleapis.com:80/ajax/services/search/web\?q\=json  Output: Content-Type: text/html curl -I https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93  Output: Content-Type: text/xml
Peter Mortensen
25#
Peter Mortensen Reply to 2014-07-19 21:49:42Z
 PHP developers use this:  
Rohit Gupta
26#
Rohit Gupta Reply to 2016-01-02 04:03:22Z
 For JSON, I am using:  Content-Type: application/json  This is described in the IETF's JSON Data Interchange Format 7158 proposal, Section 1.2: Specifications of JSON.
Nubok
27#
Nubok Reply to 2018-01-17 02:33:44Z
 The application/json works great in PHP to store an array or object data. I use this code to put data in JSON on Google Cloud Storage (GCS) which is set publically viewable: $context = stream_context_create([ 'gs' => [ 'acl'=>'public-read', 'Content-Type' => 'application/json', ] ]); file_put_contents( "gs://BUCKETNAME/FILENAME.json", json_encode((object)$array), false, $context );  To get back the data is straight forward: $data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json")); 
Iresha Rubasinghe
28#
Iresha Rubasinghe Reply to 2016-07-27 00:57:23Z
 Extending the accepted responses, when you are using JSON in a REST context... There is a strong argument about using application/x-resource+json and application/x-collection+json when you are representing REST resources and collections. And if you decide to follow the jsonapi specification, you should use of application/vnd.api+json, as it is documented. Altough there is not an universal standard, it is clear that the added semantic to the resources being transfered justify a more explicit Content-Type than just application/json. Following this reasoning, other contexts could justify a more specific Content-Type.
Marco
29#
Marco Reply to 2016-04-21 08:44:40Z
 If you get data from REST API in JSON so you have to use content-type For JSON data: Content-Type:application/json For HTML data: Content-Type:text/html, For XHTML data: Content-Type:application/xhtml+xml, For XML data: Content-Type:text/xml, application/xml 
Peter Mortensen
30#
Peter Mortensen Reply to 2017-03-13 18:14:13Z
 For specifying the interesting JSON result, you add "application/json" in your request header like below: "Accept:application/json" is a desired response format. "Content-Type:application/json" specifies the content format of your request, but sometimes you specify both application/json and application/xml, but the quality of these might be different. Which server will send back the different response formats, look at the example: Accept:application/json;q=0.4,application/xml;q=8 ` This will return XML, because XML has higher quality.
 You need to login account before you can post.
Processed in 0.426351 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO