【问题标题】:I don't understand JSON and when I'm supposed to use it, care to explain?我不懂 JSON,当我应该使用它时,需要解释一下吗?
【发布时间】:2014-03-15 13:54:21
【问题描述】:

我刚开始学习 ASP.NET,遇到了 Web 服务。我不完全理解 JSON 的用途是什么,我应该什么时候使用它,以及为什么它比 XML 更好。请解释一下?

【问题讨论】:

标签: asp.net json web-services


【解决方案1】:

JSON 是一种基于文本的对象序列化格式,比 XML 更轻量级。它直接与 JavaScript 的对象模型集成。这就是它的大部分优势。

【讨论】:

【解决方案2】:

您将主要使用 JSON 在 Web 客户端和 Web 服务器之间发送数据,通常使用 WebServices。它将数组和对象序列化为人类可读的文本,并且可以很容易地被计算机解析。它是 ECMA 404 标准。

这是一个带有一些属性的 JSON 序列化类的示例,其中一个属性是一个数组:

{firstname: 'Joe',  lastname: 'Smith', phonenumbers: ['555-555-5555','444-444-4444']}

【讨论】:

    【解决方案3】:

    在许多情况下,JSON 比 XML 更轻量级,因为它的格式简单。如果您还没有觉得自己熟悉 JavaScript 中的数组、函数和对象,我想看看它。之后 JSON 会感觉非常熟悉且易于使用

    【讨论】:

      【解决方案4】:

      JSON 是一种用于存储和交换文本信息的语法——很像 XML。 它比 XML 的主要优点是:

      • 比 XML 更小更短
      • 解析更快、更容易,
      • 读写速度更快

      来自 W3schools,JSON 对象可能如下所示:

      var employees = [
      { "firstName":"John" , "lastName":"Doe" }, 
      { "firstName":"Anna" , "lastName":"Smith" }, 
      { "firstName":"Peter" , "lastName": "Jones" }
      ];
      

      XML 文件可能如下所示:

      <?xml version="1.0" encoding="UTF-8"?>
      <employees >
       <employee>
         <firstName>John</firstName>
         <lastName>Doe</lastName>
       </employee>
       <employee>
         <firstName>Anna</firstName>
         <lastName>Smith</lastName>
       </employee>
       <employee>
         <firstName>Peter</firstName>
         <lastName>Jones</lastName>
       </employee>
      </employees >
      

      从上面的例子你应该看到读写 JSON 对象比 XML 快得多,因为它更小更短。

      当您想在服务器和网络浏览器之间进行一些数据交换并动态加载一些数据时——例如从数据库中,JSON 对象非常方便:

      function yourJavascriptfunction(sender){
      
         $.post("returndata.php", {
          UserID:sender.name
           })
          .success(function(data){    
           var returnedObject = JSON.parse(data);
           for(var i = 0; i < returnedObject.Data.length; i++){
              console.log(returnedObject.Data[i]["someRowInYourTable"]);
           }
          })
          .fail(function(jqXHR, textStatus, errorThrown){
            alert("Unable to retrieve data from the server, error code:" + errorThrown);
          });
       }
      

      您的名为 returndata.php 的 php 文件可以从您创建的数据库中返回例如这些数据

      <?php
          $connection = mysqli_connect("localhost","root","password","yourDatabase") or die(mysql_error());
          $userID = $_POST['UserID'];
      
          $query1 = mysqli_query($connection, "SELECT * FROM table1 WHERE userid = $userID");
      
          $returnObject = new stdClass();
          $returnObject->Error = "Some error";
          $ObjectArray = array();
          $position = 0;
      
          while ($newrow = mysqli_fetch_array($query1)) {
              $ObjectArray[$position] = $newrow;
              $position++;
          }
      
          $returnObject->Data = $ObjectArray;
          echo json_encode($returnObject);
      
      ?>
      

      【讨论】:

        【解决方案5】:

        确实有些区别……

        XML 的优点:

        • 支持评论
        • 支持命名空间
        • 支持架构

        JSON 的优点:

        • 更小
        • 原生支持 null
        • 原生对象支持
        • 原生数组支持
        • 提供标量数据类型(字符串是字符串,数字是数字等)。但缺少日期。
        • 更简单(但见仁见智)

        可读性... 有些人认为 XML 更难阅读...我不同意。对于分层数据,XML 可以大放异彩。如果您不使用 JSON,它可能看起来像乱码,尤其是在它没有格式化和缩进的情况下。我认为在这种情况下是平局。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-06-30
          • 1970-01-01
          • 2012-01-16
          • 1970-01-01
          • 2019-10-14
          • 1970-01-01
          • 2018-08-29
          相关资源
          最近更新 更多