JSON 内容类型有许多“标准 ” :
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
我用哪一种,在哪里?我假设安全和浏览器支持问题是一个因素。
相关:如果JSON被REST API送回,什么MIME类型?
JSON 内容类型有许多“标准 ” :
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
我用哪一种,在哪里?我假设安全和浏览器支持问题是一个因素。
相关:如果JSON被REST API送回,什么MIME类型?
当前回答
作为一些研究,
最常见的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媒体类型)。
其他回答
当前的适当标准是应用程序/json。 虽然默认编码是 UTF-8, 值得一提的是, 它也可能是 UTF-16 或 UTF-32. 当 JSON 写入 UTF-16 或 UTF-32 时, 必须使用二进制内容传输编码 。
RFC 4627: JavaScript 对象标记的应用/json 介质类型(JSON)
5. 内容-传输-编码页眉字段(RRC 1341)是二进制传输编码的更多资料。
扩大被接受的答复, 当你使用JSON 在REST背景下...
当您代表REST的资源和收藏时,使用应用程序/x资源+json和应用程序/x收集+json是有充分论据的。
如果您决定遵循jsonapi 规范, 您应该使用已记录在案的应用程序/ vnd. api+json 。
虽然不存在普遍标准,但显然,所转让资源中增加的语义显然证明,比仅仅应用/json更明确的内容类型是合理的。
根据这一推理,其他情况可以证明更具体的内容类型是合理的。
“申请/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())
}
}
在 JSP 中,您可以在页面指令中使用此指令 :
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
JSON的正确MIME媒体类型是申请/json, JSP将用来向客户发送回复。
IANA 申请登记/json说
使用这种媒体类型的应用:JSON一直被用来在以所有这些编程语言书写的申请之间交换数据:ActionScript、C、C#、Clojure、ColdFusion、Common Lisp、E、E、Eerlan、Go、Java、JavaScript、Lua、CAML目标、Perl、PHP、Python、Rebol、Ruby、Scala和Schep。
您会注意到 IANA. org 没有列出任何其他类型的媒体, 事实上, 应用程序/ javascript 现在已经过时了 。 因此应用程序/ json 是唯一可能的正确答案 。
浏览器支持是另一回事。
最得到广泛支持的非标准媒体类型是文本/json或文本/javascript。 但有些大名甚至使用文本/平方。
更奇怪的是Flickr发来的“内容-类”头条, 他将JSON回回为文本/xml。 Google使用文本/插件来描述其中的ajax apis。
实例:
curl -I "https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=jsonexample"
产出:内容-类型:文本/插图
curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93"
产出:内容类型:文本/xml