JSON 内容类型有许多“标准 ” :

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

我用哪一种,在哪里?我假设安全和浏览器支持问题是一个因素。

相关:如果JSON被REST API送回,什么MIME类型?


当前回答

只有在使用应用/json作为MIME类型时(截至2011年11月,有最新版本的Chrome、Firefox和Firebug),我才具备以下条件:

当 JSON 从服务器上装入时, Chrome 不再发出警告 。 Firebug 会在回复中添加一个标签, 显示您格式化的 JSON 数据。 如果 MIME 类型不同, 它会显示为“ 响应内容 ” 。

其他回答

PHP 中的应用程序/json 工作非常出色,可以存储数组或对象数据。

我用这个代码在谷歌云存(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"));

如果JSON用垫子,那将是申请/jsonp。如果JSON没有划线,那将是申请/json。

要同时处理这两种问题,使用“应用/刺杀”是一种良好做法,无需担心是用垫子还是不用垫子。

如果您使用 Ubuntu 或 Debian , 并通过 Apache 服务于 .json 文件, 您可能需要以正确的内容类型服务文件 。 我这样做主要是因为我想使用 Firefox 扩展 JSONView

Apache 模块 mod_ mime 将有助于轻松做到这一点。 但是, 您需要编辑文件/ etc/ mime. type 并添加行

application/json json

然后重新启动 Apache :

sudo service apache2 restart

并非所有内容类型应用程序/json都有效。

如果您正在使用 Ext JS 表格提交到上传文件, 请注意, 服务器响应由浏览器解析, 以创建 < iframe > 的文档 。

如果服务器正在使用 JSON 发送返回对象, 则内容- 类型页眉必须设置为文本/ html , 以便告诉浏览器将文本插入文档正文, 未改变 。

见Ext JS 3.4.0 API文件。

JSON (JavaScript Objects Notation) 和 JSONP (“JSON with padding”) 格式似乎非常相似,因此,它们应该使用哪种MIME类型可能非常混乱。 尽管格式相似,但两者之间有一些微妙的差别。

因此,每当有任何疑问时,我有一个非常简单的方法(在多数情况下完全正常),即去检查相应的RFC文件。

JSON RFC 4627 (JSPAScript 支出用途说明(JSON)的应用/json媒体类型)是JSON格式的规格。

application/json.

JSONP JSONP JSONP (“JSON with padding” ) 在浏览器中处理的方式不同于JSON。 JSONP 被作为普通的 JavaScript 脚本处理, 因此它应该使用JSONP JSONP JSONP (“ JSON with padding ” ) 的当前正式的 MIME 类型, JSONP (“JSON with padding ” ) 。 但是, 在许多情况下, 文本/ javacript MIME 类型也会正常工作 。

请注意 RFC 4329 (Scripting Media Type) 文档将文本/javascript标为已过时,建议改用应用程序/javascript类型,但是,由于遗留原因,文本/javascript仍然被广泛使用,并有交叉浏览支持(这并不总是应用/javascript MIME类型的情况,特别是旧浏览器)。