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

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

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

相关:如果JSON被REST API送回,什么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”是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())
  }
}

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

当 JSON 从服务器上装入时, Chrome 不再发出警告 。 Firebug 会在回复中添加一个标签, 显示您格式化的 JSON 数据。 如果 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 在REST背景下...

当您代表REST的资源和收藏时,使用应用程序/x资源+json和应用程序/x收集+json是有充分论据的。

如果您决定遵循jsonapi 规范, 您应该使用已记录在案的应用程序/ vnd. api+json 。

虽然不存在普遍标准,但显然,所转让资源中增加的语义显然证明,比仅仅应用/json更明确的内容类型是合理的。

根据这一推理,其他情况可以证明更具体的内容类型是合理的。

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类型的情况,特别是旧浏览器)。