之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题。

Json简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便。

Json的具体形式是: 
1.对象

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

例如: {“username”: “Eric”,”age”:23,”sex”: “man”}

代码示例:

<script type="text/javascript">  
function getUser()
{
var user = {
"username": "Eric",
"age":23,
"family": {"mother":"Marry","father":"Alon","brother":"Tom"}
}; alert( user.username ); alert( user.age ); alert(user.family.brother);
} getUser(); </script>

2、数组

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

例如: ["Eric",23, "man"]

代码示例:

<script type="text/javascript">  
function getArray() { var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];
alert(arr[0]); alert(arr[1]); alert(arr[2][0]); alert(arr[2][1]); } getArray();
</script>

注意:对象和数组两种形式在JS中的调用时不一样啊,对象用“.”调用,数组用下标[0]、[1]调用。还要注意在传递Json串时string类型的值要用引号括起来。

PHP中将数组转变成Json 
强大的PHP已经提供了内置函数:json_encode() 和 json_decode()。很容易理解,json_encode()就是将PHP数组转换成Json。相反,json_decode()就是将Json转换成PHP数组。

例如:

$array = array("name" => "Eric","age" => 23); 
echo json_encode($array);
程序将打印出 : {“name”:”Eric”,”age”:23}

再看下面的例子:

$array = array(0 => "Eric", 1 => 23);   echo json_encode($array);

程序将打印出 :["Eric",23] 
以上两个例子可以看出,如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,如果PHP数组的键全是字符串。那么json_encode()就会返回一个对象形式的Json。刚已经说过。两者在js中的调用是不同的。 
事实上,只要在PHP数组的键中有一个字符串形式的键,那么json_encode()就会返回对象形式的Json。这是不正确的。因为,虽然在PHP代码中不会出现错误,但要是将这样的Json传给JS函数,JS会将此Json当做一个对象,而对象是不可能以数字作为属性名的。也就是说JS 不知道这是什么 : user.0.username  (中间是数字零)

PHP数组和Json之间的互相转换 json_encode() 和 json_decode()的更多相关文章

  1. JavaScriptES6中Map与对象、数组,JSON之间的相互转换

    JavaScriptES6中Map与对象.数组,JSON之间的相互转换 https://blog.csdn.net/c__dreamer/article/details/82183130

  2. 数组字符串json之间的相互转换

    数组转字符串 var arr = [1,2,3,4,'巴德','merge']; var str = arr.join(','); console.log(str); // 1,2,3,4,巴德,me ...

  3. (IEEE-754) 字节数组与浮点数之间的互相转换(MODBUS float类型)

    在做上位机开发过程中,经常会碰到字节数组与浮点数,整数等数据之间的转换,有时为了验证数据是否解析正确,得借助于IEEE浮点数工具,本文把基于c#实现的浮点数与字节数组(或16进制的字符串)转换的实现方 ...

  4. PHP处理数组和XML之间的互相转换

    PHP将数组转换成XML PHP可以将数组转换成xml格式,简单的办法是遍历数组,然后将数组的key/value转换成xml节点,再直接echo输出了,如: function arrayToXml($ ...

  5. PHP数组与对象之间用递归转换

    2 3 4 5 6 7 8  function object_to_array($e) {      $_arr = is_object($e) ? get_object_vars($e) : $e; ...

  6. Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换

    总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain; public clas ...

  7. json 数组 对象 xml 之间转换(待补充)

    json 数组  xml 对象   之间转换(待补充) 1 把对象的类型或者数组转换成字符串类型(或者更确切的说是json类型的). 此处参考链接http://www.jb51.net/article ...

  8. java中 json和bean list map之间的互相转换总结

    JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib]   在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ...

  9. iOS 字典或者数组和JSON串的转换

    在和服务器交互过程中,会iOS 字典或者数组和JSON串的转换,具体互换如下: // 将字典或者数组转化为JSON串 + (NSData *)toJSONData:(id)theData { NSEr ...

随机推荐

  1. javaweb 中的乱码问题

    一.post 方式 首先我们看下面一段代码,在该HTML中我们指定的编码为“UTF-8”,如图所示. 在该代码中,我们将表单数据提交给ParamServlet 处理 servlet 会将接收到的数据打 ...

  2. 学习笔记_JDBC_1_Demo1_连接数据库的基本操作和步骤

    常见错误:连数据库时,这句话String url = "jdbc:mysql://localhost/数据库名";数据库名可能和你建的数据库名不一样 1.安装Mysql,记住此时你 ...

  3. linux字符过滤

    1  案例一:取eth0的IP地址 方法一:通过cut方法过滤 [root@baiguin ~]# ifconfig eth0|grep "inet addr:"|cut -d & ...

  4. Visual C++ 打印编程技术-打印基础知识

    打印机介绍 1.打印术语 *: 1 英寸= 2.54 厘米(cm)= 25.4 毫米(mm) cpi (Characters Per Inch): 每英寸内所含的字符数,用来表示字符的大小.间距 cp ...

  5. js判断手机浏览器操作系统和微信浏览器的方法

    做手机端的前端开发,少不了对手机平台的判断.如,对于app下载,就要判断在Android平台下就显示Android下载提示:在iOS平台下就显示iOS下载提示. 今天就为大家介绍一下用js判断手机客户 ...

  6. Cordova5 -- iOS实战(一)

      由于最近公司的项目要求用Cordova来进行开发,便开始了对Cordova的学习.由于本人之前也是做iOS开发,因此相关内容主要从iOS平台的角度来写.刚开始学习Cordova这个平台,希望以此总 ...

  7. 04_XML_03_XMLDTD约束与校验

    [什么是XML约束] 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,称之为XML约束. 常见的XML约束技术有:XML DTD和XML Schema DTD(Document Typ ...

  8. 【制作镜像Win*】文件准备

    mkdir /var/image-createcd /var/image-create/ 在物理机上: wget http://10.254.3.75/images/libvirt/libvirt.x ...

  9. 2016.08.06计算几何总结测试day1

    T1 bzoj1132[POI2008]TRO 还是太弱了....测试时看到这题直接懵逼,极角排序什么的根本想不起来,只会n^3暴力怎么破......不过竟然有84.....QAQ 正解是n^2log ...

  10. Morgan Stanley telephone interview

    Today is Monday, April 28. I get a telephone call from Morgan Stanley in Shanghai. My examiner is a ...