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的解决方法相关推荐

  1. linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

    不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...

  2. myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法)

    myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) 参考文章: (1)myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) (2)https://www. ...

  3. JPA-save()方法会将字段更新为null的解决方法

    JPA-save()方法会将字段更新为null的解决方法 参考文章: (1)JPA-save()方法会将字段更新为null的解决方法 (2)https://www.cnblogs.com/qingmu ...

  4. Android中View转换为Bitmap及getDrawingCache=null的解决方法

    Android中View转换为Bitmap及getDrawingCache=null的解决方法 参考文章: (1)Android中View转换为Bitmap及getDrawingCache=null的 ...

  5. mysql5.7 解压版 中文乱码_MySQL 5.7解压版安装、卸载及乱码问题的图文解决方法...

    1. 解压版的安装 (1). 下载压缩包并解压到一个磁盘位置 压缩包下载链接:https://dev.mysql.com/downloads/mysql/ 压缩包内容: (2). 写配置文件 复制my ...

  6. laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式

    浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...

  7. ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...

    1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...

  8. 服务器系统记事本乱码,win7系统记事本出现乱码的五种解决方法

    win7系统自带有记事本功能,它是一个简单的文字编辑器,用户可直接打开记事本记录文字,相信大家对雨林木风win7系统的记事本在熟悉不过.然而有不少win7系统用户在打开记事本的时候出现乱码,这是怎么回 ...

  9. android u盘盘符乱码,分享U盘中文件出现乱码的原因以及解决方法

    当使用U盘时发现U盘文件成了乱码,就算将U盘拔插了几次也无法恢复,这是怎么回事呢?U盘文件出现乱码又应该如何解决呢?接下来就为大家分享U盘中文件出现乱码的原因以及解决方法. u盘出现乱码的原因: 1. ...

最新文章

  1. Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392
  2. c语言分支结构程序设计教学设计 赛课,《分支结构程序设计》教学设计.doc
  3. 内存分配与数据格式化(malloc与new)
  4. 如何查看计算机配置和名称,如何查看电脑本机配置和跑分
  5. linux crm高可用网卡,Linux运维——pacemaker实现高可用-Go语言中文社区
  6. 电脑知识:Win10系统把系统盘的软件移到D盘的简单方法
  7. 域名的MX设置及校验方法
  8. php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...
  9. 拼接的option会多出空行_Word空格,空行,页眉横线等问题,我只花一分钟就全解决了...
  10. 1152Google Recruitment
  11. pdo mysql fedora_fedora编译安装php5.5
  12. linux下查看内存频率,内核函数,cpu频率
  13. bubblesort java,算法bubbleSort()
  14. 嵌入式硬件转职软件开发,这十点是必不可少的技能
  15. oracle巡检计划书,网络巡检计划表.doc
  16. sklearn机器学习之分类决策树(泰坦尼克号幸存者数据集)
  17. 语音识别算法原理文档整理(二)
  18. 宁录哨兵机器人_单纯靠速度快银就打得过哨兵机器人?想多了,怼上这一版就不行!...
  19. PS 导入笔刷和导入字体和导入滤镜
  20. 传奇服务器怪物不显示名字,传奇小地图显示怪物的一个问题

热门文章

  1. 华为笔记本matebook13_华为MateBook 13_HUAWEI MateBook 13(i5 8265U/8GB/256GB/独显)_笔记本导购-中关村在线...
  2. maven 配置篇 之pom.xml
  3. maven乱码解决方案---修改maven编码
  4. tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  5. BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
  6. 【GDAL】GDAL栅格数据结构学习笔记(一): 关于Metadata
  7. DEBUG_NEW和THIS_FILE
  8. 求数组中的最长递增子序列
  9. 《那些年啊,那些事——一个程序员的奋斗史》——72
  10. [转]MacBook Pro上装三系统 OS X、Ubuntu、Win 7