【发布时间】:2014-03-15 13:54:21
【问题描述】:
我刚开始学习 ASP.NET,遇到了 Web 服务。我不完全理解 JSON 的用途是什么,我应该什么时候使用它,以及为什么它比 XML 更好。请解释一下?
【问题讨论】:
标签: asp.net json web-services
我刚开始学习 ASP.NET,遇到了 Web 服务。我不完全理解 JSON 的用途是什么,我应该什么时候使用它,以及为什么它比 XML 更好。请解释一下?
【问题讨论】:
标签: asp.net json web-services
JSON 是一种基于文本的对象序列化格式,比 XML 更轻量级。它直接与 JavaScript 的对象模型集成。这就是它的大部分优势。
【讨论】:
您将主要使用 JSON 在 Web 客户端和 Web 服务器之间发送数据,通常使用 WebServices。它将数组和对象序列化为人类可读的文本,并且可以很容易地被计算机解析。它是 ECMA 404 标准。
这是一个带有一些属性的 JSON 序列化类的示例,其中一个属性是一个数组:
{firstname: 'Joe', lastname: 'Smith', phonenumbers: ['555-555-5555','444-444-4444']}
【讨论】:
在许多情况下,JSON 比 XML 更轻量级,因为它的格式简单。如果您还没有觉得自己熟悉 JavaScript 中的数组、函数和对象,我想看看它。之后 JSON 会感觉非常熟悉且易于使用
【讨论】:
JSON 是一种用于存储和交换文本信息的语法——很像 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);
?>
【讨论】:
确实有些区别……
XML 的优点:
JSON 的优点:
可读性... 有些人认为 XML 更难阅读...我不同意。对于分层数据,XML 可以大放异彩。如果您不使用 JSON,它可能看起来像乱码,尤其是在它没有格式化和缩进的情况下。我认为在这种情况下是平局。
【讨论】: