首页博客网络编程
我们已经了解了XML格式。因此,理解JSON会容易得多:XML和JSON是相似的。它们都是旨在包含纯文本的文件格式,并且机器和人类都可以轻松阅读。因此,它们被用作标准。
如果您需要从服务器检索特定信息并使其显示在您的网站上,则可能会使用 JSON。JSON 的名称代表 JavaScript 对象表示法。它基于 JavaScript,因此在这里非常欢迎对它有一些基本的了解。JSON 也使用 JavaScript 语法。
与XML不同,它不支持名称标签和注释,但支持PHP数组。JSON 也更轻量级,更易于阅读。在本教程中,我们将查看大量示例并学习使用称为 PHP json_decode() 和 json_encode() 的最基本的 PHP JSON 函数。
JSON 是可以在 PHP 变量中转换的匿名数据。
数组可以转换为 JSON 格式。
JSON 通常用于从 Web 服务器读取数据并将其显示在网站上。
有集成的函数来操作 JSON。其中最重要的是PHP和PHP。json_encode()
json_decode()
要将PHP对象转换为JSON,我们使用PHP函数。为了进行相反的转换,使用了PHP,但稍后会详细介绍。现在让我们看一个代码示例:json_encode()
json_decode()
例复制
<?php $myObj->fruit = "Banana"; $myObj->expires = 2017; $myObj->country = "Lithuania"; $exampleJSON = json_encode($myObj); echo $exampleJSON;?>
这个JavaScript使用AJAX来获取PHP文件:
例复制
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if (this.readyState == 4 && this.status == 200) { var newObj = JSON.parse(this.responseText); document.getElementById("JSON").innerHTML = newObj.fruit; }}; xmlhttp.open("GET", "demo.php", true); xmlhttp.send();
就像对象一样,数组使用 PHP 函数转换为 JSON。json_encode()
例复制
<?php$myArr = array("Bob", "Bill", "Ben", "Brutus"); $myJSON = json_encode($myArr);echo $myJSON;?>
这个JavaScript使用AJAX将PHP文件从数组中取出:
例复制
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var newObj = JSON.parse(this.responseText); document.getElementById("JSON").innerHTML = newObj[2]; } }; xmlhttp.open("GET", "demo_array.php", true); xmlhttp.send();
作为一种编码语言,PHP JSON是服务器端的。这意味着您只能将其用于服务器执行的任务。连接到数据库可能是这些适当的任务之一。想象一下,我们有一个保存某些信息的数据库。要请求它,我们需要调用数据库:
例复制
<!DOCTYPE html> <html> <body> <h2>JSON data from PHP file.</h2> <p>The JSON received from the PHP file:</p> <p id="example"></p> <script>var obj, dbParameters, xmlhttp; obj = { "table":"fruits", "limit":5 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("example").innerHTML = this.responseText; } }; xmlhttp.open("GET", "your_file.php?x=" + dbParam, true); xmlhttp.send(); </script> </body> </html>
首先,我们描述保存属性表和限制的对象,并将其转换为 JSON。
之后,将包含 JSON 参数的调用发送到 PHP 文件。
返回调用时,我们输出从文件中收到的内容。
这里有我们的 PHP 文件:
例复制
<?phpheader("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_GET["x"], false); $connect = new mysqli("RequiredServer", "RequiredUsername", "RequiredPassword", "Northwind"); $result = $connect->query("SELECT name FROM ".$obj->table." LIMIT ".$obj->limit); $output = array(); $output = $result->fetch_all(MYSQLI_ASSOC);echo json_encode($output);?>
让我们逐步回顾上面的脚本:
调用使用 PHP 转换为对象。json_decode()
建立与数据库的连接是为了将数据写入数组。
数组附加到一个对象,该对象使用 PHP 以 JSON 格式返回。json_encode()
包含 PHP 代码的文件中的数据可以转换为 JavaScript 数组。为此,我们将使用 PHP for 循环:
例复制
... xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { newObj = JSON.parse(this.responseText); for (x in newObj) { txt += newObj[x].name + "<br>"; } document.getElementById("JSON").innerHTML = txt; } }; ...
每当您需要将某些信息发送到服务器时,HTTP方法似乎是最佳选择。要将其用于 AJAX 调用,请不要忘记定义方法和正确的标头。我们需要发送到服务器的数据将成为函数的参数:POST
send()
例复制
obj = { "table":"customers", "limit":10 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { newObj = JSON.parse(this.responseText); for (x in newObj) { txt += newObj[x].name + "<br>"; } document.getElementById("JSON").innerHTML = txt; } }; xmlhttp.open("POST", "JSON.php", true); xmlhttp.setRequestHeader("Content-type", "application/learn-encoded"); xmlhttp.send("x=" + dbParam);
处理 PHP 文件时,只有方法不同:
例复制
<?phpheader("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_POST["x"], false); $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $result = $conn->query("SELECT name FROM ".$obj->table." LIMIT ".$obj->limit); $outp = array(); $outp = $result->fetch_all(MYSQLI_ASSOC);echo json_encode($outp);?>
JSON 是一种标准的基于文本的格式,与 XML 类似但更轻量级。它保存可以解析为变量的匿名数据。
它通常用于读取服务器数据并将其输出到网页中。
JSON可以通过使用内置的PHP函数来处理。例如,可以使用 PHP 函数将 PHP 对象转换为 JSON 格式文件。对于相反的转换,请使用 PHP 。json_encode()
json_decode()
XML 不支持 PHP 数组,但可以转换为 JSON。
声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!
广告位
广告位