PHP 回傳 JSON 很方便, 只要將資料經過 json_encode() 就解決了.

不過因為 PHP 自動轉換型別, 造成很多資料都習慣存成字串, 希望在輸出 JSON 的時候, 數字部份可以輸出成數字, 該怎麼做呢?

另一個問題, PHP 轉換成 JSON, 部份陣列會被轉成对象(因為 JavaScript 陣列的 Key 必須是數字, 所以會轉成对象), 要全部強制轉成对象, 該怎麼做呢?

PHP 讓 json_encode() 指定回傳格式

上述的問題, json_encode() 的參數都可以解決.

json_encode() 有這些參數可以用:

  • JSON_HEX_QUOT
  • JSON_HEX_TAG
  • JSON_HEX_AMP
  • JSON_HEX_APOS
  • JSON_NUMERIC_CHECK
  • JSON_PRETTY_PRINT
  • JSON_UNESCAPED_SLASHES
  • JSON_FORCE_OBJECT

PHP 判斷型別輸出 JSON 數字型態

主要靠 json_encode 的 JSON_NUMERIC_CHECK 參數, ex:

<?php
echojson_encode(array('id'=>'123', 'data' =>'abc'), JSON_NUMERIC_CHECK);
echojson_encode(array('id'=>'123', 'data' =>'abc'));
echojson_encode(array('id'=>123, 'data' =>'abc'));
?>

輸出結果

  • {"id":123,"data":"abc"}
  • {"id":"123","data":"abc"}
  • {"id":123,"data":"abc"}

PHP 強迫輸出 JSON 物件(对象)格式

主要靠 json_encode 的 JSON_FORCE_OBJECT 參數, ex:

<?php
echojson_encode(array(1,2, 3));
echojson_encode(array(1,2, 3), JSON_FORCE_OBJECT);
echojson_encode(array(array(1,2, 3)));
echojson_encode(array(array(1,2, 3)), JSON_FORCE_OBJECT);
echojson_encode(array(1=>123, 2 =>'abc'));
?>

輸出結果

  • [1,2,3]
  • {"0":1,"1":2,"2":3}
  • [[1,2,3]]
  • {"0":{"0":1,"1":2,"2":3}}
  • {"1":123,"2":"abc"} // 本來就會輸出 Object

PHP 讓 json_encode() 指定回傳格式的更多相关文章

  1. Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

    本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...

  2. shell的date日期循环方法:日期格式转时间戳计算,再将时间戳转回日期格式

    1,日期对象转时间戳current_day 2,计算增量的时间戳,即循环每步的增量one_day 3,循环体计算,日期变量加增量后重新赋值自己 4,时间戳转回日期格式后输出 current_day=2 ...

  3. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  4. 原创:如何实现在Excel通过循环语句设置指定行的格式

    原创:如何实现在Excel通过循环语句设置指定行的格式 一.需求: 想让excel的某些行(比如3的倍数的行)字体变成5号字 如何整: 二.实现: Sub code() To Range(" ...

  5. (转)linux 中使用ls指定输出时间格式

    linux 中使用ls指定输出时间格式 原文:http://blog.csdn.net/chaofanwei/article/details/13018753 ls -l --time-style=x ...

  6. 指定pdf的格式

    爬虫实战[3]Python-如何将html转化为pdf(PdfKit)   前言 前面我们对博客园的文章进行了爬取,结果比较令人满意,可以一下子下载某个博主的所有文章了.但是,我们获取的只有文章中的文 ...

  7. ArcEngine地图窗口指定区域导出指定DPI多格式---delphi/C#实现

    delphi/C#实现,其他语言稍微改下就行了.AE的编码各个语言都差不多,这里也没用到某一语言的特性. 函数特点: 1.可以精确导出指定范围的图形要素 2.支持多格式.TIF, .EMF,.GIF, ...

  8. 通过VBA,当在EXCEL单元格中输入任意的日期格式时,都能自动转换为指定的标准格式的日期值

    在日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,如:2017-10-17 或 2017/10/17时,EXCEL会自动识别为日期并按单元格设计格式显示,单元格中存储的值也是日期格式 ...

  9. 三元運算子回傳lambda expression

    紀錄一下 假如我想要透過三元運算子?: 傳回lambda expression 要明確轉型

随机推荐

  1. 端口扫描 开启 防火墙 iptables SELinux

    Linux 如何打开端口 - lclc - 博客园 https://www.cnblogs.com/lcword/p/5869522.html linux如何查看端口相关信息_百度经验 https:/ ...

  2. SDIO卡 了解

    SDIO接口是在SD接口基础上发展起来的,SDIO接口兼容SD接口.SDIO协议又在SD卡协议之上添加了CMD52(一般用来访问寄存器)和CMD53(字节和块传输)命令.SDIO和SD卡规范间的一个重 ...

  3. 浅谈js执行机制

    关于js执行机制,老早之前就一直想写篇文章做个总结,因为和js执行顺序的面试题碰到的特别多,每次碰到总是会去网上查,没有系统地总结,搞得每次碰到都是似懂非懂的感觉,这篇文章就系统的总结一下js执行机制 ...

  4. 常见的页面效果,相关的js代码

    1.焦点图 $(document).ready(function(){ var i=0; var autoChange= setInterval(function(){ if(i<$(" ...

  5. easyUI-右键菜单,关闭选项卡

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. Redis使用基本套路

    Redis的数据,通常都是来自于数据库. 存入Redis当中,可以快速的查询.不用每次都关联查询,然后其他处理什么的. 通常可以把一些,不经常变的数据存储其中. 避免数据变动,而Redis缓存数据不变 ...

  7. 西交校赛 I. GZP and CS(数位dp)

    I. GZP and CS GZP love to play Counter-Strike(CS). One day GZP was playing a mod of CS. The counter- ...

  8. [AHOI 2006] 上学路线

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1266 [算法] 首先 , 用Dijkstra求单源最短路 然后 , 建出这张图G的最 ...

  9. 【JSOI 2007】建筑抢修

    [题目链接] 点击打开链接 [算法] 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可 ...

  10. fasttext(1) -- 认识 fasttext 和 初步使用

    fastText 的 Python接口:https://github.com/salestock/fastText.py (1) fasttext 简介:FastText是Facebook开发的一款快 ...