PHP json_encode输出:如何去除日期字符串的引号?
关于JSON输出中日期引号的问题
嘿,我得先给你敲个警钟——你想要的[[2018/05/03,900]]这种输出格式,其实不符合JSON的语法规范哦!
为什么引号不能随便去掉?
在JSON的规则里,字符串类型必须用双引号包裹。而2018/05/03这种带斜杠的内容,既不是数字、布尔值,也不是合法的JSON字面量(比如null),要是直接不带引号输出,任何标准的JSON解析器都会把它判定为语法错误,根本没法正常解析。
那该怎么处理?
分两种情况来说:
如果要输出合法的JSON:
完全没办法去掉日期的引号,因为它本质就是字符串,JSON规范强制要求字符串加引号。硬删引号的话,输出的就不是真的JSON了,后续对接的程序肯定会出问题。如果不在乎JSON合法性,只是想要特定格式的字符串:
那别用json_encode,直接手动拼接字符串就行。比如针对你的代码可以这么写:$dy = $s[$i]['time']; $date = date("Y/m/d", $dy); $price = $s[$i]['price']; // 直接输出你想要的格式 echo "[[$date,$price]]";但一定要注意,这种输出不是标准JSON,其他系统或前端解析时大概率会报错,除非对方专门做了兼容处理。
额外建议
如果你的需求是让前端能识别这个日期,其实完全不用纠结引号的问题。前端拿到带引号的日期字符串后,直接用new Date("2018/05/03")就能转成日期对象,反而比不规范的格式更可靠。
内容的提问来源于stack exchange,提问作者AFV
相关产品推荐
相关产品推荐

