PHP中json_encode()使用须知,JSON数组和JSON对象
一、⊰ 偷偷的告诉你,这是一个很不谨慎就会踩得坑 ⊱
如下代码 (看了一下很简单,没毛病啊,老铁)
$arr = array(
'0'=>'a','1'=>'b','2'=>'c','3'=>'d'
);
echo json_encode($arr);
但是结果是
["a","b","c","d"]
需求是要返回JSON对象,是这样似的
{"0":"a","1":"b","2":"c","3":"d"}
You can do it,you nee add
$arr = array(
'0'=>'a','1'=>'b','2'=>'c','3'=>'d'
);
echo json_encode((object)$arr);
输出结果
{"0":"a","1":"b","2":"c","3":"d"}
bingo,搞定

总结:PHP数组=>json数组/对象,但是PHP对象=>json对象,so如果负责接口一类的开发的话,建议json_encode()之前可以先(object)强制转换一下。
二、客户端传输json
1,如果客户端提交的是json类型的元数据,后端php获取后会自动转为数组;
2,如果客户端提交的是json格式的字符串,后端php获取后 如果字符串中引号带有\反斜杠,需要用 stripslashes() 函数给预定义字符去掉\反斜杠,再使用json_decode()转为数组(第二个参数设置为true)或者object(默认);
3,如果客户端提交的是json格式的字符串,后端php获取后 如果字符串中引号没有\反斜杠,json_decode()转为数组(第二个参数设置为true)或者object(默认);
4,addslashes()是stripslashes()的反函数;
5,json 字符串中的键值必须用 双引号("") 包裹起来, 单引号或者不用引号都不能正确解析, 结果会是 null
PHP中json_encode()使用须知,JSON数组和JSON对象的更多相关文章
- JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串
JS遍历JSON对象 JS遍历JSON对象 <script> var obj = { "goodsid": "01001", "goods ...
- json 中关于json数组跟json对象的区别
原文地址:http://blog.csdn.net/lafengwnagzi/article/details/52789171 JSON 是存储和交换文本信息的语法 JSON 文本格式在语法上与创建 ...
- JSON数组,JSON对象,数组的区别与基本操作整理
JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是: ...
- Json对象,Json数组,Json字符串的区别
Json对象: var str = {"姓名":"张三","性别":"男","年龄":"2 ...
- Gson解析json字符串、json数组转换成对象
实体类: public class Product { private int id; private String name; private String date; public int get ...
- js中使用将json数组 转换为json将一个包含对象的数组用以创建一个包含新重新格式化对象的新数组
1.使用reduce: let arr = [{ "code": "badge", "priceList": [{ "amount ...
- android JSONArray JSONObject 字符串转json数组 遍历json对象
String json = "{''data'':[{''name'':''Wallace''},{''name'':''Grommit''}]}"; StringBuffer m ...
- json数组和json字符串转换成map解析
package demo; import java.util.List;import java.util.Map;import java.util.Map.Entry; import net.sf.j ...
- 前端表单序列化为json串,以及构造json数组、json串
var parm={ username:"zhangsan", age:24, email:"352400260@qq.com" }; console.log( ...
随机推荐
- js数据校验插件
//数据校验 /** *{type:"类型",notEmpty:true,regxp: reg,MaxLength: number,MinLength number,message ...
- delegate事件委托
下面举个例子 我们希望通过点击使得点击的li标签变红 <body style="height:2000px;"> <ul> <li>1111&l ...
- javascript 的类式继承(构造函数)
<script type="text/javascript"> //类式继承(构造函数) var father = function(){ this.age = 52; ...
- 【tmos】字段create_time如何动态的生成
1.数据库create_time字段默认值设置为CURRENT_TIMESTAMP,实体类中不映射createTime字段,在用jpa的save()方法时,会自动生成,如果你传了null值到数据库,是 ...
- Webstorm通用设置
常用快捷键 Ctrl+Alt+L : 格式化代码
- 模拟post表单提交参数
Content-Type: application/x-www-form-urlencoded;charset=utf-8
- 实验吧 smali文件分析
题目链接:http://www.shiyanbar.com/ctf/1871 好吧,这题真是基础中的基础,基础中的战斗机. 不光没有任何绕弯的地方,逻辑有且仅有一个.... 多说无益,使用工具jadx ...
- ASP.NET MVC - 处理Html数据
HtmlAgilityPack 使用HtmlAgilityPack可以以面向对象的方式通过查找Html节点来获取页面元素.参考:http://html-agility-pack.net HtmlDoc ...
- android图片绘制
1.基本圆角.边框 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=& ...
- CF1100E Andrew and Taxi
题目地址:CF1100E Andrew and Taxi 二分,每次取到一个 \(mid\) ,只保留长度 \(>mid\) 的边 dfs判环,若有环,说明 \(ans>mid\) ,否则 ...