一、⊰ 偷偷的告诉你,这是一个很不谨慎就会踩得坑 ⊱ 

如下代码 (看了一下很简单,没毛病啊,老铁)

$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对象的更多相关文章

  1. JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串

    JS遍历JSON对象 JS遍历JSON对象 <script> var obj = { "goodsid": "01001", "goods ...

  2. json 中关于json数组跟json对象的区别

    原文地址:http://blog.csdn.net/lafengwnagzi/article/details/52789171 JSON 是存储和交换文本信息的语法 JSON 文本格式在语法上与创建 ...

  3. JSON数组,JSON对象,数组的区别与基本操作整理

    JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是: ...

  4. Json对象,Json数组,Json字符串的区别

    Json对象: var str = {"姓名":"张三","性别":"男","年龄":"2 ...

  5. Gson解析json字符串、json数组转换成对象

    实体类: public class Product { private int id; private String name; private String date; public int get ...

  6. js中使用将json数组 转换为json将一个包含对象的数组用以创建一个包含新重新格式化对象的新数组

    1.使用reduce: let arr = [{ "code": "badge", "priceList": [{ "amount ...

  7. android JSONArray JSONObject 字符串转json数组 遍历json对象

    String json = "{''data'':[{''name'':''Wallace''},{''name'':''Grommit''}]}"; StringBuffer m ...

  8. json数组和json字符串转换成map解析

    package demo; import java.util.List;import java.util.Map;import java.util.Map.Entry; import net.sf.j ...

  9. 前端表单序列化为json串,以及构造json数组、json串

    var parm={ username:"zhangsan", age:24, email:"352400260@qq.com" }; console.log( ...

随机推荐

  1. Caused by: java.lang.InstantiationException: cn.at.bean.domain.ConstantInt

      org.springframework.jdbc.UncategorizedSQLException: ConnectionCallback; uncategorized SQLException ...

  2. tfs二次开发-利用tfs api做查询

    参考地址:https://msdn.microsoft.com/en-us/library/bb130306(v=vs.120).aspx You can query for bugs, tasks, ...

  3. 推荐使用string

    C-string(char* const char*) basic_string<>特化版本:string charwstring wchar_tu16string char16_tu32 ...

  4. 20145215《网络对抗》Exp4 恶意代码分析

    20145215<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...

  5. 使用@JsonView注解控制返回的Json属性

    我也是刚看到原来还可以这么玩,但是我还是习惯使用Dto,我总感觉这样做的话实体类耦合程度有点高.还是记录以下,万一今后用到了呢 ⒈在实体类中使用接口来声明该实体类的多个视图. ⒉在实体类的属性get方 ...

  6. vue中过滤器filters的使用

    组件内写法 filters:{ filter:function(data,arg1,arg2){ return .... } } 全局写法 filters('filter',function(data ...

  7. HDOJ 4267 A Simple Problem with Integers (线段树)

    题目: Problem Description Let A1, A2, ... , AN be N elements. You need to deal with two kinds of opera ...

  8. 自动配置redis主从和哨兵

    redis shell  每次创建redis主从和哨兵服务,文件夹要复制好几个,配置文件改一大堆.繁琐还容易出错,就想通过shell脚本自动帮我配置好端口以及文件,下面就是脚本内容: redis-to ...

  9. 关于dubbo服务超时的讨论

    呵呵,偷点懒,直接把QQ上的讨论发下来. huxin  10:35:19你们现在超时了是咋办的,首先超时了,回复用户肯定是要的 huxin  10:36:14超时了用户实际是不知道这业务是成功还失败了 ...

  10. 浅谈Linux下CPU利用率和CPU负载【转】

    转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...