11086

私はしばらくの間、 JSONをいじっていましたが、それをテキストとしてプッシュしただけで、(私が知っている限り) 誰にも害はありませんでしたが、適切に処理を開始したいと考えています。

私は、JSON コンテンツ タイプの「標準」と称されるものを非常に多く見てきました。

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json

しかし、どちらが正しいですか、それとも最高ですか? 私は、セキュリティとブラウザのサポートの問題がそれらの間で異なることを収集します.

JSON が REST API によって返される場合、どの MIME タイプですか? という同様の質問があることは知っています。、しかし、もう少し的を絞った回答が欲しいです。

4

37 に答える 37

11159

JSON テキストの場合:

application/json

JSON テキストの MIME メディア タイプはapplication/json. デフォルトのエンコーディングは UTF-8 です。(出典: RFC 4627 )

コールバックを使用するJSONP (実行可能な JavaScript) の場合:

application/javascript

関連するコメントで言及されたいくつかのブログ投稿を次に示します。

于 2009-01-25T15:27:29.720 に答える
1737

IANAは、JSONの公式MIMEタイプをとして登録していますapplication/json

理由について尋ねられたときtext/json、Crockfordは、JSONは実際にはJavaScriptでもテキストでもない、またIANAはよりも配布する可能性が高いと言ったようapplication/*ですtext/*

その他のリソース:

于 2010-04-07T04:32:55.107 に答える
974

JSON の場合:

Content-Type: application/json

JSON-P の場合:

Content-Type: application/javascript
于 2012-06-20T03:10:53.043 に答える
671

もちろん、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を使用したサーバー側のソース コード スニペット

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);
    }
};
于 2009-10-07T14:35:36.313 に答える
492

JSON:

応答は、URL で渡されたクエリ パラメータに従って、動的に生成されたデータです。

例:

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

コンテンツ タイプ: application/json


JSON-P:

パディング付きの JSON。応答は、関数呼び出しがラップされた JSON データです。

例:

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

コンテンツ タイプ: application/javascript

于 2013-03-28T07:54:24.180 に答える
424

Ubuntu または Debian を使用していて、Apache を介して .json ファイルを提供する場合は、正しいコンテンツ タイプでファイルを提供することをお勧めします。私がこれを行っている主な理由は、Firefox 拡張機能JSONViewを使用したいからです。

Apache モジュールmod_mimeは、これを簡単に行うのに役立ちます。ただし、Ubuntu では、ファイル/etc/mime.typesを編集して次の行を追加する必要があります。

application/json json

次に、Apache を再起動します。

sudo service apache2 restart
于 2010-11-16T22:58:25.013 に答える
406

クライアント側から ASP.NET Web サービスを呼び出す場合はapplication/json、それを機能させるために使用する必要があります。これはjQueryExtフレームワークでも同じだと思います。

于 2009-01-25T15:31:38.807 に答える
321

JSON の適切なコンテンツ タイプは、application/jsonUNLESS you're using JSONPです。JSON with Padding とも呼ばれます。これは実際には JavaScript であるため、適切なコンテンツ タイプはapplication/javascript.

于 2012-04-12T04:00:37.183 に答える
311

JSON 応答にapplication/json最適なMIMEタイプであることは間違いありません。

application/x-javascriptしかし、いくつかの圧縮の問題のために使用しなければならなかった経験がありました. 私のホスティング環境はGoDaddyとの共有ホスティングです。サーバー構成を変更することはできません。web.config応答を圧縮するために、ファイルに次のコードを追加しました。

<httpCompression>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

これを使用することで、.aspx ページは g-zip で圧縮されましたが、JSON 応答は圧縮されませんでした。追加した

<add mimeType="application/json" enabled="true"/>

静的および動的タイプのセクションで。しかし、これは JSON 応答をまったく圧縮しません。

その後、この新しく追加されたタイプを削除して追加しました

<add mimeType="application/x-javascript" enabled="true"/>

静的タイプと動的タイプの両方のセクションで、応答タイプを変更しました

.ashx (非同期ハンドラー) へ

application/x-javascript

そして今、JSON 応答が g-zip で圧縮されていることがわかりました。なので個人的にはオススメです

application/x-javascript

共有ホスティング環境で JSON 応答を圧縮する場合のみ。共有ホスティングでは、 IIS構成を変更できないためです。

于 2012-04-18T08:22:23.807 に答える
275

MIMEapplication/jsonタイプとして使用する場合のみ、次のものがあります(2011年11月現在、Chromeの最新バージョン、Firefox with Firebug):

  • JSON がサーバーから読み込まれるときに、Chrome から警告が表示されなくなりました。
  • Firebug は、書式設定された JSON データを示すタブを応答に追加します。MIME タイプが異なる場合は、「応答コンテンツ」として表示されます。
于 2011-11-30T06:42:21.580 に答える
234

JSON はドメイン固有言語(DSL) であり、JavaScript から独立したデータ形式であるため、独自のMIMEタイプapplication/json. もちろん、MIME タイプの尊重はクライアント主導でtext/plainあり、バイトの転送についても同様ですapplication/json。経由で XML を転送しますtext/plainか?

しかし正直なところ、MIME タイプの選択は、データを解釈する方法に関するクライアントへのアドバイスです。text/plainまたはtext/HTML(HTML でない場合) タイプ消去のようなものです。タイプ Object のすべてのオブジェクトを型付き言語で作成するのと同じくらい有益ではありません。

私が知っているブラウザー ランタイムは、JSON ドキュメントを取得し、介入なしで JavaScript のアクセス可能なオブジェクトとしてランタイムで自動的に使用できるようにしますが、不自由なクライアントを操作している場合、それはまったく別の問題です。しかし、それだけではありません。多くの場合、RESTful JSON サービスには JavaScript ランタイムがありませんが、実行可能なデータ交換形式として JSON を使用することを止めるわけではありません。クライアントがそれほど不自由な場合は...代わりに、おそらくAjaxテンプレートサービスを介したHTMLインジェクションを検討します。

アプリケーション/JSON!

于 2012-05-14T22:19:48.547 に答える
215

クライアント側の環境にいる場合、クロスブラウザーのサポートについて調査することは、十分にサポートされている Web アプリケーションのために必須です。

適切な HTTP Content-Type はapplication/json、他の人も既に強調しているように になりますが、一部のクライアントはそれをうまく処理できません。そのため、jQuery はデフォルトの を推奨していますtext/html

于 2012-04-27T16:27:29.280 に答える
180

正解は次のとおりです。

Content-Type: application/json
于 2012-12-31T06:29:16.963 に答える
175

他の多くの人が述べているように、application/json正解です。

しかし、まだ説明されていないのは、あなたが提案した他のオプションが何を意味するかです。

  • application/x-javascript: JavaScript 用の試験的な MIME タイプapplication/javascriptが標準化される前。

  • text/javascript: 廃止されました。application/javascriptJavaScriptを使用する場合に使用する必要があります。

  • text/x-javascript: 上記の状況に対応する実験的な MIME タイプ。

  • text/x-jsonapplication/json:正式に登録される前の JSON の試験的な MIME タイプ。

全体として、コンテンツの種類について疑問がある場合は、このリンクを確認してください。

于 2013-04-02T11:10:56.707 に答える
157

JSPでは、これを page ディレクティブで使用できます。

<%@ page language="java" contentType="application/json; charset=UTF-8"
    pageEncoding="UTF-8"%>

JSONの正しいMIMEメディア タイプはapplication/json. JSP はこれを使用して、クライアントに応答を送信します。

于 2013-01-19T08:22:22.890 に答える
121

「<code>application/json」は正しい JSON コンテンツ タイプです。

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())
  }
}
于 2013-02-26T11:55:27.980 に答える
94

正しい MIME タイプはapplication/json

しかし

ブラウザーの種類やフレームワークのユーザーが必要とする多くの状況を経験しました。

text/html

application/javascript
于 2013-05-03T16:00:28.960 に答える
78

私は以下を使用します

contentType: 'application/json',
data: JSON.stringify(SendData),
于 2013-05-16T12:43:52.970 に答える
69

投稿するときは、Content-Type ヘッダーを「 application/json 」に設定する必要がありますリクエストをリッスンするサーバーには、「Accept=application/json」が含まれている必要があります。Spring MVC では、次のように実行できます。

@RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json")

応答にヘッダーを追加します。

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
于 2013-08-09T10:49:18.707 に答える
62

application/json、配列またはオブジェクト データを格納するために PHP でうまく機能します。

このコードを使用して、パブリックに表示可能に設定されたGoogle Cloud Storage (GCS)の JSON にデータを配置します。

$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
);

データを取り戻すには簡単です:

$data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json"));
于 2015-04-01T16:13:44.210 に答える
60

Springでは、 type: が定義されています。これはapplication/jsonMediaType.APPLICATION_JSON_VALUEと同等です。

于 2013-06-29T08:34:53.100 に答える
55

JSONの場合、私は以下を使用しています:

Content-Type: application/json

これは、IETF の JSON Data Interchange Format 7158 提案、セクション 1.2: Specifications of JSONで説明されています。

于 2015-02-06T12:01:14.770 に答える
52

JSON にパディングがある場合は、 になりますapplication/jsonp。JSON にパディングがない場合は、 になりますapplication/json

両方に対処するには、'application/javascript' を使用することをお勧めします。パディングありかパディングなしかは気にしません。

于 2013-06-21T15:22:12.830 に答える
47

REST コンテキストで JSON を使用している場合に、受け入れられた応答を拡張する...

REST リソースとコレクションをいつ使用するかについては、強い議論があります。application/x-resource+jsonapplication/x-collection+json

また、 jsonapi仕様に従うことにした場合は、文書化されているように、を使用する必要application/vnd.api+jsonがあります。

普遍的な標準はありませんが、転送されるリソースに追加されたセマンティックが、単にapplication/json.

この推論に従って、他のコンテキストがより具体的なContent-Typeを正当化する可能性があります。

于 2015-06-09T19:12:56.680 に答える
46

PHP 開発者はこれを使用します。

<?php
    header("Content-type: application/json");

    // Do something here...
?>
于 2014-03-29T05:43:05.133 に答える
46

JSON で REST API からデータを取得する場合は、Content-Typeを使用する必要があります。

  • JSON データの場合: Content-Type:application/json
  • HTML データの場合: Content-Type:text/html
  • XHTML データの場合: Content-Type:application/xhtml+xml
  • XML データの場合: Content-Type:text/xml、application/xml
于 2016-04-11T09:15:26.297 に答える
33

JSON (JavaScript Object Notation) とJSONP ("JSON with padding") 形式は非常に似ているように見えるため、どちらの MIME タイプを使用すべきか非常に混乱する可能性があります。形式は似ていますが、それらの間にはいくつかの微妙な違いがあります。

したがって、疑問がある場合はいつでも、私は非常に単純なアプローチ (ほとんどの場合、完全に正常に機能します) を使用します。つまり、対応する RFC ドキュメントにアクセスして確認します。

JSON RFC 4627 (The application/json Media Type for JavaScript Object Notation (JSON)) は、JSON 形式の仕様です。セクション 6 で、JSON テキストの MIME メディア タイプは

application/json.

JSONP JSONP ("JSON with padding") は、ブラウザーでの JSON とは異なる方法で処理されます。JSONP は通常の JavaScript スクリプトとして扱われるためapplication/javascript,、現在の公式の JavaScript 用 MIME タイプを使用する必要があります。ただし、多くの場合、text/javascriptMIME タイプも問題なく機能します。

はRFC 4329 (Scripting Media Types) ドキュメントtext/javascriptによって廃止されたものとしてマークされており、代わりに typeを使用することをお勧めします。ただし、従来の理由により、は依然として広く使用されており、クロスブラウザーをサポートしています ( MIME タイプ、特に古いブラウザーでは必ずしもそうとは限りません)。application/javascripttext/javascriptapplication/javascript

于 2016-02-15T03:20:43.267 に答える
12

前の回答を補足するために、W3C によるJSON リンク データ (JSON-LD) の MIME タイプは次のとおりです。

application/ld+json

型名:アプリケーション

サブタイプ名: ld+json

さらに、同じソースから:

ファイル拡張子:

.jsonld

于 2017-01-03T22:15:21.763 に答える
11

興味深い JSON 結果を指定するには、以下のようにリクエスト ヘッダーに「application/json」を追加します。

"Accept:application/json" は、望ましい応答形式です。

"Content-Type:application/json" はリクエストのコンテンツ形式を指定しますが、 と の両方を指定することもありますapplication/jsonapplication/xml、これらの品質は異なる場合があります。どのサーバーがさまざまな応答形式を返すか、例を見てください:

Accept:application/json;q=0.4,application/xml;q=8

XML の方が品質が高いため、これは XML を返します。

于 2016-09-04T10:21:20.690 に答える
11

適切な現在の標準はapplication/jsonです。デフォルトのエンコーディングは UTF-8 ですが、UTF-16 または UTF-32 の場合もあることに注意してください。JSON が UTF-16 または UTF-32 で記述されている場合、バイナリの content-transfer-encoding を使用する必要があります。

JSON についての詳細は、RFC 4627: The application/json Media Type for JavaScript Object Notation (JSON) にあります。

バイナリ転送エンコーディングの詳細については、5. The Content-Transfer-Encoding Header Field (RFC 1341) を参照してください。

于 2016-10-17T21:40:46.053 に答える
7

いくつかの研究として、

最も一般的な MIME タイプは次のとおりです。

アプリケーション/json

JSON と JavaScript を区別する例を見てみましょう。

  • アプリケーション/json

このデータがどのように使用されるかが不明な場合に使用されます。情報をサーバーから JSON 形式で抽出するだけの場合は、リンクまたは任意のファイルから情報を抽出できます。その場合は、それが使用されます。

例えば-

<?php

    header('Content-type:application/json');

    $directory = [
            ['Id' => 1, 'Name' => 'this'],
            ['Id' => 2, 'Name' => 'is'],
            ['Id' => 3, 'Name' => 'Stack Overflow'],
        ];

    // Showing the JSON data

    echo json_encode($directory);
?>

出力は、

[{"Id":1, "Name":"this"}, {"Id":2, "Name":"is"}, {"Id":3, "Name":"Stack Overflow"}]

  • アプリケーション/JavaScript

データの用途が事前に定義されている場合に使用されます。これは、クライアント側の Ajax アプリケーションによる呼び出しがあるアプリケーションによって使用されます。データのタイプが JSON-P またはJSONPの場合に使用されます。

例えば

<?php

    header('Content-type:application/javascript');

    $dir = [
            ['Id' => 1, 'Name' => 'this' ],
            ['Id' => 2, 'Name' => 'is'],
            ['Id' => 3, 'Name' => 'Stack Overflow'],
    ];

    echo "Function_call(" . json_encode($dir) . ");";
?>

出力は、

Function_call([{"Id":1, "Name":"this"}, {"Id":2, "Name":"is"}, {"Id":3, "Name":"Stack Overflow"}])

その他の MIME タイプについては、 MIME タイプ (IANA メディア タイプ)の詳細を参照してください。

于 2020-12-13T07:50:41.267 に答える