PHP中JSON的应用措施

可以用下面这样的 JSON 表示名称/值对,可以表示比名称/值对更复杂的结构,PHP5.2开始内置了JSON的支持,现在主要是说说PHP内置支持的JSON,可以用下面这样的 JSON 表示名称/值对,可以表示比名称/值对更复杂的结构

修改 JSON 数据

<?php教程
$arr = array(
‘name’ => ‘陈毅鑫’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ”,
)
);
$json_string = json_encode($arr);
echo $json_string;
?>
很简短的将一个数组JSON了。需求建议的是,在非UTF-8编码下,中文字符将不得被encode,结果会出去空值,所以,假若你利用
gb2312编纂PHP代码,那么就需求将含有中文的原委使用iconv或者mb转为UTF-8再进行json_encode,上面输出结果如下:

访问对象内的质量会呢?$obj->name,那样子的,当然,也足以把它转位数组,方便调用啦:

 

<?php
$arr = array(
‘name’ => ‘陈毅鑫’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ”,
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?>
访谈对象内的品质会吗?$obj->name,那样子的,当然,也得以把它转位数组,方便调用啦:

复制代码 代码如下:

比方,能够成立贰个新的 JavaScript 变量,然后将 JSON
格式的多少字符串间接赋值给它:

{“name”:”u9648u6bc5u946b”,”nick”:”u6df1u7a7a”,”contact”:{“email”:”shenkong
at qq dot com”,”website”:”
自身都说了和体系化很像,你还不信。编码后将要解码,PHP提供了对应的函数json_decode,json_decode实践后,将会获取叁个对象,操作如下:

复制代码 代码如下:

更珍视的是,能够将任何 JavaScript 对象调换为 JSON
文本。并非只好管理原本用 JSON 字符串赋值的变量。为了对名称为 myObject
的对象开始展览改换,只需推行同一款式的通令:

哪些利用JSON。PHP5.2伊始内置了JSON的支撑。当然,要是低于这几个版本的话,那么市情上有多数PHP版本的兑现,随便下二个用就OK啦。未来主假诺说说PHP内置协助的JSON。很简短,几个函数:json_encode和json_decode(跟连串化很像啊)。
三个编码,三个解码。先看看编码的使用:

当心,数组索引是从零从头的。所以,那行代码首先访问 people
变量中的数据;然后移动到称为 programmers
的条款,再移动到第一个记录([0]);最终,访谈 lastName
键的值。结果是字符串值 “McLaughlin”。

然而,当将八个称呼/值对串在共同有时候,JSON
就能够呈现出它的股票总值了。首先,能够创建包涵八个称呼/值对的记录,比如:

<script
type=”text/网页特效”>
var arr =
{“name”:”u9648u6bc5u946b”,”nick”:”u6df1u7a7a”,”contact”:{“email”:”shenkong
at qq dot com”,”website”:”;
alert(arr.name)
</script>
下边中,间接将这么些字符串赋给二个变量,它就形成多少个Javascript数组了(职业化术语应该不叫数组,不过出于PHP的习于旧贯难点,我就
平昔叫数组好了,方便驾驭)。这样,能够很有益于的对arr进行遍历或许私下做你想做的事体了。写到这里,好像都没涉及AJAX哦?是啊,联想一下,如若服
务端再次来到的responseText用JSON过的字符串代替XML的话,前台Javascript处理起来是或不是很方便啊?狗皮膏药正是这么用的。
实在写到这里,除了数据的仓库储存格式不太一致外,JSON和XML也没怎么太大差距哦,可是上边小编说的一点。就算和XML没多大关系,不过,
能够印证JSON越来越大面积的接纳,这正是,跨域的数目调用。由于安全性难题,AJAX不协助跨域调用,那样要调用分化域名下的数额,很麻烦哦,即使有缓解方案(stone在她的讲座上提到过了代理啊什么的固然听不懂但是知道能消除)。小编写多个文本,足以呈现跨域调用了。
主调文件index.html
<script type=”text/javascript”>
function getProfile(str) {
var arr = str;
document.getElementById(‘nick’).innerHTML = arr.nick;
}
</script>
<body><div id=”nick”></div></body>
<script type=”text/javascript”
src=”/demo/profile.php”></script>
被调文件profile.php
<?php
$arr = array(
‘name’ => ‘陈毅鑫’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ”,
)
);
$json_string = json_encode($arr);
echo “getProfile($json_string)”;
?>

这么就行了!今后就获得了三个足以在其他省方选取的文本字符串,举个例子,可以将它用作
Ajax 应用程序中的诉求字符串。

简 单地说,JSON 能够将 JavaScript
对象中象征的一组数据调换为字符串,然后就能够在函数之间轻便地传递这几个字符串,恐怕在异步应用程序中将字符串从
Web
客户机传递给服务器端程序。这一个字符串看起来某些诡异(稍后拜谒到多少个示范),但是JavaScript 很轻易解释它,并且 JSON
能够象征比名称/值对更头眼昏花的构造。比方,可以表示数组和复杂的对象,而不只是键和值的粗略列表。

$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (array) $obj;
print_r($arr);
PHP转来转去的用途不是特意大,除了缓存生成,认为还不及直接存数组呢,不过,当您和前台交互的时候,它的机能就出来咯,上边看看自家怎么用Javascript来利用这段字符:

自然,如若不能够自在地将对象调换回本文提到的文本格式,那么富有数据修改都未曾太大的市场总值。在
JavaScript 中这种转移也很轻便:

$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (array) $obj;
print_r($arr);
PHP转来转去的用途不是特地大,除了缓存生成,感到还不及间接存数组呢,不过,当您和前台交互的时候,它的功效就出来咯,上面看看自个儿怎么用Javascript来利用这段字符:

PHP中JSON的施用措施

复制代码 代码如下:

 

通过 GET 以名称/值对发送 JSON

当然,倘使不能够轻巧地将目的转换回本文提到的文本格式,那么具有数据修改都并未有太大的价值。在
JavaScript 中这种转移也极粗略:

选择那样的语法,能够管理别的 JSON 格式的数目,而无需动用其余附加的
JavaScript 工具包或 API。

 

public void doPost(HttpServletRequest request, HttpServletResponse
response)
 throws ServletException, IOException {
 StringBuffer jb = new StringBuffer();
 String line = null;
 try {
  BufferedReader reader = request.getReader();
  while ((line = reader.readLine()) != null)
   jb.append(line);
 } catch (Exception e) { //report an error }
 try {
  JSONObject jsonObject = new JSONObject(jb.toString());
 } catch (ParseException e) {
  // crash and burn
  throw new IOException(“Error parsing JSON request string”);
 }
 // Work with the data using methods like…
 // int someInt = jsonObject.getInt(“intParamName”);
 // String someString = jsonObject.getString(“stringParamName”);
 // JSONObject nestedObj = jsonObject.getJSONObject(“nestedObjName”);
 // JSONArray arr = jsonObject.getJSONArray(“arrayParamName”);
 // etc…
}

将 JSON 发给服务器

将 JSON 发给服务器并不难,但却至关重要,而且还有一些重要的选择要做。但是,一旦决定使用 JSON,所要做的这些选择就会十分简单而且数量有限,所以您需要考虑和关注的事情不多。重要的是能够将 JSON 字符串发送给服务器,而且最好能做到尽快和尽可能简单。

通过 GET 以名称/值对发送 JSON

将 JSON 数据发给服务器的最简单方法是将其转换成文本,然后以名称/值对的值的方式进行发送。请务必注意,JSON 格式的数据是相当长的一个对象,看起来可能会如清单 1 所示:

清单 1. JSON 格式的简单 JavaScript 对象

var people = { "programmers": [  { "firstName": "Brett", "lastName":"McLaughlin",
"email": "brett@newInstance.com" },  { "firstName": "Jason", "lastName":"Hunter",
"email": "jason@servlets.com" },  { "firstName": "Elliotte", "lastName":"Harold",
"email": "elharo@macfaq.com" }  ], "authors": [  { "firstName": "Isaac", 
"lastName": "Asimov", "genre": "science fiction" },  { "firstName": "Tad", 
"lastName": "Williams", "genre": "fantasy" },  { "firstName": "Frank", 
"lastName": "Peretti", "genre": "christian fiction" }  ], "musicians": [  
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },  
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }  ] }

如果要以名称/值对将其发送到服务器端,应该如下所示:

var url = "organizePeople.php?people=" + people.toJSONString();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);

这看起来不错,但却存在一个问题:在 JSON 数据中会有空格和各种字符,Web 浏览器往往要尝试对其继续编译。要确保这些字符不会在服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要在 JavaScript escape() 函数中做如下添加:

var url = "organizePeople.php?people=" + escape(people.toJSONString());
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);

该函数可以处理空格、斜线和其他任何可能影响浏览器的内容,并将它们转换成 Web 可用字符(比如,空格会被转换成 %20,浏览器并不会将其视为空格处理,而是不做更改,将其直接传递到服务器)。之后,服务器会(通常自动)再把它们转换回它们传输后的本来 “面目”。

这种做法的缺点有两个:

  • 在使用 GET 请求发送大块数据时,对 URL 字符串有长度限制。虽然这个限制很宽泛,但对象的 JSON 字符串表示的长度可能超出您的想象,尤其是在使用极其复杂的对象时更是如此。
  • 在跨网络以纯文本发送所有数据的时候,发送数据面临的不安全性超出了您的处理能力。

简言之,以上是 GET 请求的两个限制,而不是简单的两个与 JSON 数据相关的事情。在想要发送用户名和姓之外的更多内容,比如表单中的选择时,二者可能会需要多加注意。若要处理任何机密或极长的内容,可以使用 POST 请求。

利用 POST 请求发送 JSON 数据

当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:

var url = "organizePeople.php?timeStamp=" + new Date().getTime();
request.open("POST", url, true);
request.onreadystatechange = updatePage;
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send(people.toJSONString());

这些代码中的大部分,您都在 “掌握 Ajax,第 3 部分:Ajax 中的高级请求和响应” 中见过,应该比较熟悉,第 3 部分重点介绍了如何发送 POST 请求。请求使用 POST 而非 GET 打开,而且 Content-Type 头被设置为让服务器预知它能得到何种数据。在这种情况下,即为 application/x-www-form-urlencoded,它让服务器知道现在发送的是文本,正如它从常规的 HTML 表单中得到的一样。

另 一个简单提示是 URL 的末尾追加了时间。这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发;此 URL 会由于时间戳的不同而稍微有些不同。这种技巧常被用于确保到脚本的 POST 每次都会实际生成新请求且 Web 服务器不会尝试缓存来自服务器的响应。

JSON 就只是文本

不管使用 GET 还是 POST,关键之处在于 JSON 就只是文本。由于不需要特殊编码而且每个服务器端脚本都能处理文本数据,所以可以轻松利用 JSON 并将其应用到服务器。假如 JSON 是二进制格式的或是一些怪异的文本编码,情况就不这么简单了;幸好 JSON 只是常规的文本数据(正如脚本能从表单提交中所接收到的数据,在 POST 段和 Content-Type 头中亦可以看出),所以在将数据发送到服务器时无需太费心。

在服务器上解释 JSON

一 旦您编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息,此时,服务器就成为了应用程序(如果调用了异步使用的服务器端程序,则可能是我们认为的所谓的 “Ajax 应用程序”)中的主角。在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。

处理 JSON 的两步骤

不管在服务器端使用何种语言,在服务器端处理 JSON 基本上就需要两个步骤。

  1. 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。
  2. 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。

以上差不多就是目前所应了解的大致内容了。接下来,我们对每个步骤进行较为详细的介绍。

寻找 JSON 解析器

寻找 JSON 解析器或工具箱最好的资源是 JSON 站点(有关链接,请参阅 参考资料)。 在这里,除了可以了解此格式本身的方方面面之外,还可以通过各种链接找到 JSON 的各种工具和解析器,从 ASP 到 Erlang,到 Pike,再到 Ruby,应有尽有。您只需针对自己编写脚本所用的语言下载相应的工具箱即可。为了让服务器端脚本和程序能够使用此工具箱,可以根据情况对其进行选择、扩 展或安装(如果在服务器端使用的是 C#、PHP 或 Lisp,则可变性更大)。

例如,如果使用的是 PHP,可以简单将其升级至 PHP 5.2 并用它完成操作;在 PHP 这个最新版本默认包含了 JSON 扩展。实际上,那也是在使用 PHP 时处理 JSON 的最好方法。如果使用的是 Java servlet,json.org 上的 org.json 包显然就是个不错的选择。在这种情况下,可以从 JSON Web 站点下载 json.zip 并将其中包含的源文件添加到项目构建目录。编译完这些文件后,一切就就绪了。对于所支持的其他语言,同样可以使用相同的步骤;使用何种语言取决于您对该语 言的精通程度,最好使用您所熟悉的语言。

使用 JSON 解析器

一旦获得了程序可用的资源,剩下的事就是找到合适的方法进行调用。比如,假设为 PHP 使用的是 JSON-PHP 模板:

// This is just a code fragment from a larger PHP server-side script
require_once('JSON.php');

$json = new Services_JSON();

// accept POST data and decode it
$value = $json->decode($GLOBALS['HTTP_RAW_POST_DATA']);

// Now work with value as raw PHP

通过该模板,可将获得的所有数据(数组格式的、多行的、单值的或 JSON 数据结构中的任何内容)转换成原生 PHP 格式,放在 $value 变量中。

如果在 servlet 中使用的是 org.json 包,则会使用如下代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 StringBuffer jb = new StringBuffer();
 String line = null;
 try {
  BufferedReader reader = request.getReader();
  while ((line = reader.readLine()) != null)
   jb.append(line);
 } catch (Exception e) { //report an error }

 try {
  JSONObject jsonObject = new JSONObject(jb.toString());
 } catch (ParseException e) {
  // crash and burn
  throw new IOException("Error parsing JSON request string");
 }

 // Work with the data using methods like...
 // int someInt = jsonObject.getInt("intParamName");
 // String someString = jsonObject.getString("stringParamName");
 // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName");
 // JSONArray arr = jsonObject.getJSONArray("arrayParamName");
 // etc...
}

在 JavaScript 中使用 JSON

调控了 JSON 格式之后,在 JavaScript 中利用它就很简短了。JSON 是
JavaScript 原生格式,这象征在 JavaScript 中管理 JSON
数据无需其余特殊的 API 或工具包。

下边是行使一样变量的多少个示范。

上面是应用一样变量的多少个示范。

尽 管看起来不分明,但是上边的长字符串实际上只是贰个数组;将以此数组放进
JavaScript
变量之后,就可以比较轻易地拜望它。实际上,只需用点号表示法来代表数组成分。所以,要想拜望programmers 列表的率先个条目款项标姓氏,只需在 JavaScript
中央银行使上边那样的代码:

如此这般就行了!未来就赢得了三个足以在别的地方选拔的文本字符串,比方,能够将它用作
Ajax 应用程序中的须求字符串。

很简短的将三个数组JSON了。须要建议的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,纵然您利用
gb2312编纂PHP代码,那么就供给将包括汉语的始末使用iconv或然mb转为UTF-8再开始展览json_encode,上边输出结果如下:
{“name”:”/u9648/u6bc5/u946b”,”nick”:”/u6df1/u7a7a”,”contact”:{“email”:”shenkong
at qq dot com”,”website”:”
我都说了和类别化很像,你还不信。编码后将在解码,PHP提供了对应的函数json_decode,json_decode实施后,将会获得二个对象,操作如下:

String myObjectInJSON = myObject.toJSONString();

<?php
$arr = array(
‘name’ => ‘脚本之家’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ‘//www.jb51.net’,
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?>

 

将 JSON
发给服务器并轻易,但却根本,何况还也会有局地尤为重要的取舍要做。不过,一旦决定使用
JSON,所要做的这一个采用就能够出色简易何况数量少于,所以你供给思虑和关怀的业务没有多少。主要的是能力所能达到将
JSON 字符串发送给服务器,并且最棒能成功抢先和不择手腕轻易。

这就是 JSON 与本种类切磋的别的数据格式之间最大的分化。如若利用
JSON,只需调用多个归纳的函数,就足以获得通过格式化的数目,能够一直行使了。对于其余数据格式,必要在原始数据和格式化数据里面展开改换。就算使用
Document Object Model 这样的
API(提供了将团结的数据结构转变为文本的函数),也急需学习这一个 API 并动用
API 的靶子,并非使用原生的 JavaScript 对象和语法。

左右了 JSON 格式之后,在 JavaScript 中央银行使它就很简短了。JSON 是
JavaScript 原生格式,那意味在 JavaScript 中管理 JSON
数据没有要求任何非常的 API 或工具包。

您或然感兴趣的小说:

  • 行使JSON完成数据的跨域传输的php代码
  • php
    Infiniti级数据JSON格式及JS深入分析
  • PHP JSON 数据剖判代码
  • PHP6 先修班 JSON实例代码
  • php操作JSON格式数据的兑当代码
  • JSON在PHP中的应用介绍

比如,可以创设三个新的 JavaScript 变量,然后将 JSON
格式的数量字符串直接赋值给它:

网络的前天,AJAX已经不是怎么着面生的词汇了。提及AJAX,恐怕会及时想起因昂CoraSS而兴起的XML。XML的辨析,可能已经不是何等难题了,特别是
PHP5,多量的XML分析器的涌现,如最轻量级的SimpleXML。可是对于AJAX来讲,XML的深入分析更赞成于前台Javascript的援救度。
小编想有所分析过XML的人,都会因树和节点而头大。不可以还是不可以认,XML是很不利的数码存款和储蓄格局,可是其灵活恰恰产生了其解析的辛苦。当然,这里所指的艰苦,
是相对于本文的支柱--JSON来说。
JSON为什么物?小编就不另行概念了。通俗的说,它是一种多少的积累格式,就好像PHP类别化后的字符串一样。它是一种多少描述。举个例子我们将一个数组连串化后存放,就足以很轻易的反连串化后使用。JSON也是那样,只可是他搭建的是客户端Javascript和劳务端PHP的并行桥梁。我们用
PHP生成JSON后的字符串,然后把那么些字符串传给前台Javascript,Javascirpt就足以很轻易的将其反JSON然后采取。说通俗点,
它实在很像数组。
言归正传,怎样使用JSON。PHP5.2起先内置了JSON的帮忙。当然,如若低于这么些本子的话,那么市道上有众多PHP版本的贯彻,随便下多个用就OK啦。现在重大是说说PHP内置补助的JSON。异常粗略,七个函数:json_encode和json_decode(跟类别化很像啊)。
叁个编码,叁个解码。先看看编码的利用:

那简单通晓。在这一个示例中,只有二个名字为 people
的变量,值是带有多少个条目的数组,每一个条款是壹位的记录,当中积累名、姓和电子邮件地址。上面的演示演示怎样用括号将记录组合成一个值。当然,能够运用同样的语法表示多少个值(各个值包括多个记录):

在管理 JSON
格式的数码时,未有索要服从的预约义的羁绊。所以,在同一的数据结构中,能够改变表示数据的主意,乃至能够以不一致措施表示一致事物。

修改 JSON 数据

{“name”:”\u9648\u6bc5\u946b”,”nick”:”\u6df1\u7a7a”,”contact”:{“email”:”shenkong
at qq dot com”,”website”:”http:\/\/www.chenyixin.com”}}
本身都说了和种类化很像,你还不信。编码后就要解码,PHP提供了相应的函数json_decode,json_decode执行后,将会拿走一个指标,操作如下:

firstName=Brett

尽 管看起来不醒目,不过地点的长字符串实际上只是七个数组;将以此数组放进
JavaScript
变量之后,就能够很自在地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问programmers 列表的率先个条文的姓氏,只需在 JavaScript
中应用上边那样的代码:

从语法方面来看,这与名称/值比较照并不曾非常的大的优势,但是在这种情状下 JSON
更易于采用,并且可读性更加好。比如,它分明地代表以上七个值都是一律记录的一有的;花括号使这一个值有了某种联系。

people.programmers[0].lastName;

String myObjectInJSON = myObject.toJSONString();

正如能够用点号和括号访问数据,也足以遵从同等的不二等秘书籍轻巧地修改数据:

<script type=”text/javascript”>
function getProfile(str) {
var arr = str;
document.getElementById(‘nick’).innerHTML = arr.nick;
}
</script>
<body><div id=”nick”></div></body>
<script type=”text/javascript”
src=”;

调换回字符串

{ “firstName”: “Brett” }

留神,数组索引是从零起来的。所以,那行代码首先访问 people
变量中的数据;然后移动到称为 programmers
的条约,再移动到第一个记录([0]);最后,访问 lastName
键的值。结果是字符串值 “McLaughlin”。

在服务器上解释 JSON

值的数组

var people =
 { “programmers”: [
  { “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”:
“brett@newInstance.com” },
  { “firstName”: “Jason”, “lastName”:”Hunter”, “email”:
“jason@servlets.com” },
  { “firstName”: “Elliotte”, “lastName”:”Harold”, “email”:
“elharo@macfaq.com” }
  ],
 “authors”: [
  { “firstName”: “Isaac”, “lastName”: “Asimov”, “genre”: “science
fiction” },
  { “firstName”: “Tad”, “lastName”: “Williams”, “genre”: “fantasy” },
  { “firstName”: “Frank”, “lastName”: “Peretti”, “genre”: “christian
fiction” }
  ],
 “musicians”: [
  { “firstName”: “Eric”, “lastName”: “Clapton”, “instrument”: “guitar”
},
  { “firstName”: “Sergei”, “lastName”: “Rachmaninoff”, “instrument”:
“piano” }
  ]
 }

<?php
$arr = array(
‘name’ => ‘陈毅鑫’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ”,
)
);
$json_string = json_encode($arr);
echo $json_string;
?>
很轻松的将多个数组JSON了。需求提出的是,在非UTF-8编码下,汉语字符将不得被encode,结果会出去空值,所以,假设你使用
gb2312编辑PHP代码,那么就供给将含有中文的剧情使用iconv只怕mb转为UTF-8再展开json_encode,上边输出结果如下:

很举世瞩目,当index.html调用profile.php时,JSON字符串生成,并作为参数字传送入getProfile,然后将别称插入到div中,这样贰遍跨域数据交互就完毕了,是或不是特意轻易。既然JSON这么容易易用而且好用,还等什么吧?^_^

动用那样的语法,能够处理任何 JSON 格式的数码,而没有供给接纳其余额外的
JavaScript 工具包或 API。

<?php
$arr = array(
‘name’ => ‘脚本之家’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ‘//www.jb51.net’,
)
);
$json_string = json_encode($arr);
echo $json_string;
?>

那边最值得注意的是,能够代表八个值,各个值进而富含四个值。然而还应当注意,在差异的主条目款项(programmers、authors
和 musicians)之间,记录中实际的名目/值对能够不等同。JSON
是完全动态的,允许在 JSON 结构的中游改换表示数据的法子。

复制代码 代码如下:

 

值的数组

 

PHP转来转去的用处不是特意大,除了缓存生成,感到还比不上直接存数组呢,可是,当您和前台交互的时候,它的效劳就出来咯,上边看看本身怎么用Javascript来利用这段字符:

{ "programmers": [
 { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
 { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
 { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
"authors": [
 { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
 { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
 { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
 ],
"musicians": [
 { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
 { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
 ]
}

在将字符串调换为 JavaScript 对象之后,就足以像这样修改变量中的数据。

最后结论是,假如要拍卖多量 JavaScript 对象,那么 JSON
差不离明确是贰个好选拔,这样就能够轻巧地将数据转变为能够在乞请中发送给服务器端程序的格式。

本着编写服务器端程序所用的言语,找到呼应的 JSON 分析器/工具箱/帮忙器
API。

在将字符串转变为 JavaScript 对象之后,就足以像这么修改动量中的数据。

比方获得了先后可用的能源,剩下的事正是找到合适的议程开始展览调用。譬喻,倘若为
PHP 使用的是 JSON-PHP 模板:

people.authors[1].genre  // Value is "fantasy"

people.musicians[3].lastName // Undefined. This refers to the fourth entry,
 and there isn't one

people.programmers.[2].firstName // Value is "Elliotte"

将 JSON 数据赋值给变量

<?php
$arr = array(
‘name’ => ‘陈毅鑫’,
‘nick’ => ‘深空’,
‘contact’ => array(
’email’ => ‘shenkong at qq dot com’,
‘website’ => ”,
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?>
做客对象内的性质会吧?$obj->name,那样子的,当然,也能够把它转位数组,方便调用啦:

将 JSON 发给服务器

 

那特别简单;未来 people 包罗前边看到的 JSON
格式的多寡。不过,那还非常不足,因为访问数据的方式仿佛还不刚强。