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( ...
随机推荐
- jdk下载地址
1.5 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5 ...
- 第25月第2天 Django-By-Example项目记录01
1. export PATH="$PATH":/Applications/XAMPP/xamppfiles/bin/ sudo ln -s /Applications/XAMPP/ ...
- 牛客 被3整除的子序列dp
题意很清楚,直接dp即可,dp[i][j]表示到第i个字符的状态为j的方案数,这里状态指的是子序列最大下标到第i直接dp即可,dp[i][j]表示到第i个字符的状态为j的方案数,这里状态指的是子序列最 ...
- 洛谷P2251 【质量检测】
无意中刷st表题看到的题目(抄模板),一看到题目,,,没想用st表,直接莫队?????跑起来也不是特别慢... 这里用flag数组记录出现次数,set维护最小值,用的时候直接取头部. 代码也很短 #i ...
- vue 中跨组件的表单验证
使用的是element写的,里面提供了表单验证. 子组件是这样的 <template> <div> <el-form :model="value" r ...
- json数据的处理和转化(loads/load/dump/dumps)
import requests import json url='https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%8 ...
- sqlserver字符串分割
create function sp_split( @c nvarchar(4000), @splitchar nvarchar(1) ) returns @table table (word nva ...
- js常见的几种继承方式
1.原型链继承 “父类”的实例作为子类的prototype SubType.prototype = new SuperType() 2.组合继承(原型链+构造函数) function SubType( ...
- table 如何不越过父级div
设置table 被限制在外围div的方法: 设置样式: table { table-layout: fixed; /*fiexed 列宽由表格宽度和列宽度设定. 默认.列宽度由单元格内容设定.*/ w ...
- ASP.NET MVC 入门
ASP.NET MVC 入门 (Learning ASP.NET MVC) 传统的WebForm发展到如今出现不少的缺陷, 比如为了解决Http的无状态WebForm模式使用了ViewsState来保 ...