关于json_decode乱码及NULL的解决方法
2019独角兽企业重金招聘Python工程师标准>>>
写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是json_encode()和json_decode()。
这两个函数使用的时候有很多的主要事项,在这里我来说一下json_decode()。
json_decode(): 对JSON 格式的字符串进行解码,接受一个JSON 格式的字符串并且把它转换为 PHP变量。
(1)将数据转换成数组之后,打印会显示NUll:
原因之一json_decode只支持utf-8.
iconv('gbk','utf-8', $result_string);用iconv函数将写入数据的gbk编码格式转换为要输出的utf-8编码格式,若原本的数据是utf-8格式,则不用此步骤,否则还会出现乱码
注意:使用iconv函数并不是php自带的,需要可以修改php.ini文件,将extension=php_iconv.dll前的";"去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录)。(有可能是php的安装文件???)
原因之二:json字符串必须以双引号包含
str_replace("'", '"', $result_string);//将json数据中的单引替换成双引
原因之三:不能有多余的逗号如:[1,2,]
用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $result_string);
(2)将数据转换成数组或者在转换成json格式数据之后,会显示乱码:
这时候要用到urlencode()和urldecode()
以下是我的代码,经试验有效
if(file_exists($result['save_path'])){
$contents=file_get_contents($result['save_path']);//将一个文件的内容写入,文件是utf-8格式,里面是json格式的数据
//$getcontent = iconv("gbk", "utf-8//ignore",$contents);//若文件原本是utf-8格式,无需转换
$getcontent=str_replace("'", '"',$contents);//将单引替换成双引
preg_replace('/,\s*([\]}])/m', '$1', $getcontent);//去掉多余的逗号
$new_array=array();
$new_array=json_decode($getcontent,true);
$res=array();
foreach ($new_array as $key=>$val){
foreach ($new_array[$key]['items'] as $k=>$v){
if($k<$row){
$res[$k]['position']=$v['position'];
$res[$k]['distance']=$v['distance'];
$res[$k]['title']=urlencode($v['title']);
$res[$k['vicinity']=urlencode($v['vicinity']);
}
}
}
if($res){
$new_res['items']=$res;
}else{
$new_res['items']="";
}
echo urldecode(json_encode($new_res));
}
转载于:https://my.oschina.net/u/1771585/blog/516084
关于json_decode乱码及NULL的解决方法相关推荐
- linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...
不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...
- myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法)
myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) 参考文章: (1)myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) (2)https://www. ...
- JPA-save()方法会将字段更新为null的解决方法
JPA-save()方法会将字段更新为null的解决方法 参考文章: (1)JPA-save()方法会将字段更新为null的解决方法 (2)https://www.cnblogs.com/qingmu ...
- Android中View转换为Bitmap及getDrawingCache=null的解决方法
Android中View转换为Bitmap及getDrawingCache=null的解决方法 参考文章: (1)Android中View转换为Bitmap及getDrawingCache=null的 ...
- mysql5.7 解压版 中文乱码_MySQL 5.7解压版安装、卸载及乱码问题的图文解决方法...
1. 解压版的安装 (1). 下载压缩包并解压到一个磁盘位置 压缩包下载链接:https://dev.mysql.com/downloads/mysql/ 压缩包内容: (2). 写配置文件 复制my ...
- laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...
- ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...
1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...
- 服务器系统记事本乱码,win7系统记事本出现乱码的五种解决方法
win7系统自带有记事本功能,它是一个简单的文字编辑器,用户可直接打开记事本记录文字,相信大家对雨林木风win7系统的记事本在熟悉不过.然而有不少win7系统用户在打开记事本的时候出现乱码,这是怎么回 ...
- android u盘盘符乱码,分享U盘中文件出现乱码的原因以及解决方法
当使用U盘时发现U盘文件成了乱码,就算将U盘拔插了几次也无法恢复,这是怎么回事呢?U盘文件出现乱码又应该如何解决呢?接下来就为大家分享U盘中文件出现乱码的原因以及解决方法. u盘出现乱码的原因: 1. ...
最新文章
- Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392
- c语言分支结构程序设计教学设计 赛课,《分支结构程序设计》教学设计.doc
- 内存分配与数据格式化(malloc与new)
- 如何查看计算机配置和名称,如何查看电脑本机配置和跑分
- linux crm高可用网卡,Linux运维——pacemaker实现高可用-Go语言中文社区
- 电脑知识:Win10系统把系统盘的软件移到D盘的简单方法
- 域名的MX设置及校验方法
- php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...
- 拼接的option会多出空行_Word空格,空行,页眉横线等问题,我只花一分钟就全解决了...
- 1152Google Recruitment
- pdo mysql fedora_fedora编译安装php5.5
- linux下查看内存频率,内核函数,cpu频率
- bubblesort java,算法bubbleSort()
- 嵌入式硬件转职软件开发,这十点是必不可少的技能
- oracle巡检计划书,网络巡检计划表.doc
- sklearn机器学习之分类决策树(泰坦尼克号幸存者数据集)
- 语音识别算法原理文档整理(二)
- 宁录哨兵机器人_单纯靠速度快银就打得过哨兵机器人?想多了,怼上这一版就不行!...
- PS 导入笔刷和导入字体和导入滤镜
- 传奇服务器怪物不显示名字,传奇小地图显示怪物的一个问题
热门文章
- 华为笔记本matebook13_华为MateBook 13_HUAWEI MateBook 13(i5 8265U/8GB/256GB/独显)_笔记本导购-中关村在线...
- maven 配置篇 之pom.xml
- maven乱码解决方案---修改maven编码
- tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
- BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
- 【GDAL】GDAL栅格数据结构学习笔记(一): 关于Metadata
- DEBUG_NEW和THIS_FILE
- 求数组中的最长递增子序列
- 《那些年啊,那些事——一个程序员的奋斗史》——72
- [转]MacBook Pro上装三系统 OS X、Ubuntu、Win 7