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

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

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

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


当前回答

JSON是一种特定域名语言(DSL)和独立于 JavaScript 的数据格式, 并因此拥有自己的 MIME 类型、 应用程序/ json 。 当然, 尊重 MIME 类型是客户驱动的, 所以文本/ plain 也可以用于字节的传输, 但随后您会不必要地将解释推到供应商应用程序域 - 应用程序/ json 。 您会通过文本/ plain 传输 XML吗 ?

但坦率地说,你选择MIME类型是建议客户如何解释数据-文本/平方或文本/HTML(当它不是 HTML ) 。 它和用打印语言制作您类型对象一样,没有信息规范。

我知道没有浏览器运行时间会拿JSON文件, 并且自动在运行时作为 JavaScript 无障碍对象, 不受干扰地提供, 但如果你和一个残废的客户合作, 那是一个完全不同的问题。 但是,这不是整个故事- Restful JSON 服务通常没有 JSON 运行时间, 但是它不会阻止他们使用 JSON 作为可行的数据交换格式。 如果客户是残废的... 那么我会考虑也许通过 Ajax Tylating 服务输入 HTML 。

申请/JSON!

其他回答

JSON 文本:

application/json

JSON 文本的 MIME 媒体类型是应用程序/ json。 默认编码是 UTF-8 。 (资料来源: RFC 4627)

JSONP (可运行的 JavaScript) 使用回调 :

application/javascript

以下是相关评论中提到的一些博客文章:

JSON Internet Explorer 为何不使用文本/ html 用于 JSON 的 JSON Internet Explorer 有时与应用程序/ json 有问题,

内容- 类型页眉在张贴时应该设置为“ 应用程序/ json ” 。 监听请求的服务器应该包括“ 接受= 应用程序/ json ” 。 在 Spring MVC 中, 您可以这样做 :

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

回复中的添加页眉 :

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");

内容-类型:应用/json - JSON 内容-类型:应用/javascript-内容-类型:应用/x-javascript 内容-类型:应用/x-javascript - 内容-类型: JavaScript 内容-类型:文本/jawaScript :文本/javascript 但应用/json 正式注册前 JSON - JSON

你的问题的一部分 跟我有关 当我刚刚看到它。

第三方供应商正在提供一种供多个客户使用的REST服务。 它是一个直向前方的REST, 配有查询参数, 返回一个完善的JSON。 我用 PHP 和 Java 测试了它的工作原理。

我的客户端使用 Oracle Service Bus 作为他的应用程序服务器和 Internet 之间的网关。 当我使用 Oracle Service Bus 作为 OSB 服务时, 它被无效的信息格式错误崩溃。 结果发现, 返回的内容类型是文本/ html 。 OSB 将回复按此信头处理; 将文本、 XML 和 JSON 转换为文本、 XML 和 JSON 。 在此情况下, 回复是 JSonson , 但信头没有这么说 。 联系提供方时, 我收到回复 : “ 我们不会改变它, 因为不会影响其他人 ” 。

内容- 类型页眉指定内容应该是什么, 而不是实际内容。 也就是说, 在您的消费程序中, 您可以检查或忽略它, 并以任何方式处理内容 。 另一个示例是, 您可以返回 GIF 数据, 但指定内容类型为 JSON, 然后继续忽略页眉, 读取图像数据 。 这不会伤害您的程序, 但可能会伤害其他人 。

故事的道德感:好好表现。

作为一些研究,

最常见的MIME类型是

申请/日文

让我们举个例子来区分杰森和爪哇史克里普特

申请/日文

当不知道该数据将如何使用时,即使用该数据。当信息仅以 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"}]

申请/标注

在预先界定数据使用时使用,在客户端 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媒体类型)。