Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是JSON?我为什么要使用它?_Json - Fatal编程技术网

什么是JSON?我为什么要使用它?

什么是JSON?我为什么要使用它?,json,Json,我看过维基百科,用谷歌搜索了一下,并阅读了官方文档,但我还没有真正理解JSON是什么,以及我为什么要使用它 我已经使用PHP、MySQL和Javascript/HTML构建了一段时间的应用程序,如果JSON可以让我的生活更轻松、代码更好、用户界面更好,那么我想了解一下。有人能给我一个简洁的解释吗?JSON(JavaScript对象表示法)是一种用于数据交换的轻量级格式。它基于JavaScript语言的一个子集(JavaScript中构建对象的方式)。例如,有些JavaScript不是JSON,有

我看过维基百科,用谷歌搜索了一下,并阅读了官方文档,但我还没有真正理解JSON是什么,以及我为什么要使用它

我已经使用PHP、MySQL和Javascript/HTML构建了一段时间的应用程序,如果JSON可以让我的生活更轻松、代码更好、用户界面更好,那么我想了解一下。有人能给我一个简洁的解释吗?

JSON(JavaScript对象表示法)是一种用于数据交换的轻量级格式。它基于JavaScript语言的一个子集(JavaScript中构建对象的方式)。例如,有些JavaScript不是JSON,有些JSON不是JavaScript

web服务响应就是使用这种方法的一个例子。在“旧”时代,web服务使用XML作为其主要数据格式来传输回数据,但自从JSON出现(JSON格式由Douglas Crockford指定)以来,它一直是首选格式,因为它更轻量级

你可以在官方网站上找到更多信息

JSON构建在两种结构上:

  • 名称/值对的集合。在各种语言中,这是作为对象、记录、结构、字典、哈希表、键控列表或关联数组实现的
  • 值的有序列表。在大多数语言中,这是以数组、向量、列表或序列的形式实现的

JSON结构











以下是JSON数据的一个示例:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JavaScript中的JSON JSON(在Javascript中)是一个字符串

人们通常认为所有Javascript对象都是JSON,JSON是一个Javascript对象。这是不正确的

在Javascript
var x={x:y}
而不是JSON中,这是一个Javascript对象。这两者不是一回事。JSON等价物(用Javascript语言表示)是
var x='{“x”:“y”}'
x
是类型为string的对象,本身不是对象。要将其转换为一个成熟的Javascript对象,必须首先解析它,
var x=JSON.parse(“{”x:“y”}”)
x
现在是一个对象,但不再是JSON


在使用JSON和JavaScript时,您可能会尝试使用
eval
函数来计算回调中返回的结果,但不建议这样做,因为有两个字符(U+2028和U+2029)在JSON中有效,但在JavaScript中无效(请阅读更多内容)

因此,必须始终尝试使用Crockford的脚本,在评估之前检查有效的JSON。找到了脚本解释的链接,下面是js文件的链接。现在每个主流浏览器都有这样的功能

关于如何使用JSON解析器的示例(使用上述代码段中的JSON):

JSON解析器还提供了另一种非常有用的方法,
stringify
。此方法接受JavaScript对象作为参数,并输出一个JSON格式的字符串。当您要将数据发送回服务器时,这非常有用:

上述两种方法(
parse
stringify
)也采用了第二个参数,这是一个函数,将在最终结果的每个级别为每个键和值调用,每个值都将被输入函数的结果替换。(更多关于此)

顺便说一句,对于所有认为JSON只适用于JavaScript的人来说,请查看下面的解释并确认其他方面


工具书类
  • (谢谢)
  • (谢谢)
  • 另类

    • JSON是JavaScript对象表示法。与XML相比,它是一种更紧凑的跨网络连接传输数据集的方法。
      我建议在任何类似AJAX的应用程序中使用JSON,否则XML将是“推荐”选项。XML的冗长将增加下载时间和增加带宽消耗($$)。您可以使用JSON实现同样的效果,它的标记几乎专门用于数据本身,而不是底层结构。

      常见的简短回答是:如果您使用AJAX进行数据请求,您可以轻松地将对象作为JSON字符串发送和返回。Javascript支持的可用扩展名toJSON()调用所有Javascript类型,以便在AJAX请求中向服务器发送数据。AJAX响应可以返回JSON字符串形式的对象,可以通过简单的eval调用将其转换为Javascript对象,例如,如果AJAX函数someAjaxFunctionCallReturningJson返回

      "{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"
      
      你可以用Javascript写

      var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
      alert(obj.FirstName);
      alert(obj.LastName);
      
      JSON还可以用于web服务有效负载等,但它对于AJAX结果非常方便

      • 更新(十年后):不要这样做,使用JSON.parse

        • 我们必须做一个关于大学的项目,我们面临一个非常大的问题,这就是所谓的同源政策。除此之外,它还使得Javascript中的XMLHttpRequest方法无法向站点所在域以外的域发出请求

          例如,如果您的站点位于www.example.com上,则无法向www.otherexample.com发出请求。JSONRequest允许这样做,但如果该站点允许,您将得到JSON格式的结果(例如,它有一个以JSON格式返回消息的web服务)。 这可能是一个可以使用JSON的问题


          这里有一些实用的东西:

          简而言之,JSON是一种串行化的方式,它变成了JavaScript代码。执行时(使用eval或其他方式),此代码创建并返回一个包含序列化数据的JavaScript对象。这是因为JavaScript允许以下语法:

          var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
          var MyObject = {
              'StringProperty' : 'Value',
              'IntProperty' : 12,
              'ArrayProperty' : [ 1, 2, 3],
              'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
          }; // MyObject is now an object with property values set.
          
          您可以将其用于多种用途。首先,它是一种将数据从服务器后端传递到JavaScript代码的舒适方式。因此,第
          var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
          alert(obj.FirstName);
          alert(obj.LastName);
          
          var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
          var MyObject = {
              'StringProperty' : 'Value',
              'IntProperty' : 12,
              'ArrayProperty' : [ 1, 2, 3],
              'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
          }; // MyObject is now an object with property values set.
          
           function Employee(name, Id, Phone, email){
          
                this.name = name;
                this.Id = Id;
                this.Phone = Phone;
                this.email = email;
            }
          
            //access or call it as 
          
          var Emp = new Employee("mike","123","9373849784","mike.Anderson@office.com");
          
            function Employee(args){
          
             this.name = args.name;
             this.Id = args.Id;
             this.Phone = args.Phone;
             this.email = args.email;
          }
          
          //now access this as...
          
          var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});
          
           var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});
          
          {
              "Family": ["Me", "Wife", "Kid1", "Kid2"] 
          }
          
          <script
            src="https://code.jquery.com/jquery-3.2.1.min.js"
            integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
            crossorigin="anonymous"></script>
          <script type="text/javascript">  
          $.ajax({
              url:'index.php',
              data:{},
              type:"POST",
              success:function(result) {
                  jsondecoded = $.parseJSON(result);
                  $.each(jsondecoded, function(index, value) {
                      $("#servers").text($("#servers").text() + " " + value.servername);
                      console.log(value.start);
                      console.log(value.end);
                      console.log(value.id);
                  });
              },
              statusCode: {
              404: function() {
                alert( "page not found" );
              }
            }
          });
          </script>
          
          <?php 
          echo '[{"start":"2017-08-29","end":"2017-09-01","id":"22"},{"start":"2017-09-03","end":"2017-09-06","id":"23"}]';
          ?>
          
          // JSON object
          {
            "name": "John",
            "age": 20
          }
          
          // JSON array
          [
            {
              "name": "John",
              "age": 20
            },
            {
              "name": "Peter",
              "age": 22
            }
          ]