私は以前からJSONをいじっていて、テキストとして押し出していましたが、(私が知る限り)誰も傷つけていませんでした。
JSONコンテンツタイプの標準規格と称されるものは非常に多く見受けられます。
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
しかし、どれが正しいのか、最適なのか。セキュリティやブラウザのサポートの問題もあると思いますが。
似たような質問に What MIME type if JSON is being returned by a REST API? がありますが、もう少し的を射た回答が欲しいところです。
JSONテキストの場合。
application/json
の場合
JSONテキストのMIMEメディアタイプは
application/json
です。デフォルトのエンコーディングはUTF-8です。(出典:RFC 4627)。
コールバック付きのJSONP(実行可能なjavascript)の場合。
application/javascript`の場合
コメントで言及されたブログ記事のうち、関連するものを紹介します。
text/html
for JSON]3.application/json
.もちろん、JSONの正しいMIMEメディアタイプはapplication/json
ですが、アプリケーションでどのようなタイプのデータが期待されているかを認識する必要があります。
例えば、私はExt GWTを使用していますが、サーバーからのレスポンスはtext/htmlでなければなりませんが、JSONデータを含んでいます。
クライアント側、Ext GWTフォームリスナー。
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");
}
});
application/json**レスポンスタイプを使用した場合、ブラウザはファイルを保存するように指示します。
*Spring MVC]2を使用したサーバーサイドのソースコードスニペットです。
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);
}
};