首页 > 编程语言 >PHP的json_encode失败的问题

PHP的json_encode失败的问题

时间:2022-10-16 13:55:05浏览次数:52  
标签:编码 arr dump json str encode PHP

后端收到数据时, exif_read_data可以正常读取到返回数组的Orientation值, 但是imagerotate()操作就是无效。 然后在写log时, 发现用json_encode(exif_read_data($file_path)) 获取exif信息失败, 返回false.

根据官方文档:

json_encode( mixed $value[, int $options = 0[, int $depth = 512]] ) : string

value 待编码的 value ,除了resource 类型之外,可以为任何数据类型。所有字符串数据的编码必须是 UTF-8。
返回值: 成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。

如果执行失败,可以通过 json_last_error() 函数来获取详细错误信息。

那么写log失败的原因就是json_encode数组时数组中数据的编码问题了

$str = '中国你好';
$str = mb_convert_encoding($str, "UTF-16"); //把字符串转为utf-16编码
$arr = ['name'=>$str, 'age'=>18];
var_dump(json_encode($arr)); // 执行结果: bool(false)
var_dump(json_last_error()); // 打印上一次的错误代码: int(5)

如果要忽略错误, 可以加参数JSON_PARTIAL_OUTPUT_ON_ERROR, 忽略错误继续:

$str = '中国你好';
$str = mb_convert_encoding($str, "UTF-8"); // 如果是编码问题,可以这样转为utf8 
$arr = ['name'=>$str, 'age'=>18];
var_dump(json_encode($arr, JSON_PARTIAL_OUTPUT_ON_ERROR)); //执行结果为: string(22) "{"name":null,"age":18}"
var_dump(json_last_error()); // 打印上一次的错误代码: 没错误

 

标签:编码,arr,dump,json,str,encode,PHP
From: https://www.cnblogs.com/init-007/p/16796104.html

相关文章

  • hive解析多层json嵌套
    原有的json数据如下:   现在如何取到两层嵌套里面的json? 思路分析:1、重点是取到内层的json并解析,但是内层是一个json数组。怎么解析json数组?2、将内层json数组......
  • XML格式文件转JSON
    XML格式转json格式,需要用到xmltodict库。安装:pipinstallxmltodictimportxmltodictimportjsonxmlStr="""<?xmlversion="1.0"encoding="UTF-8"?><student......
  • golang中json.Marshal自定义浮点数格式化样式
    golang中如果有以下的类型typeQpsObjstruct{Keystring`json:"key"`Qpsfloat64`json:"qps"`}json.Marshal后会输出如下的字符串 {"key":"test","qp......
  • Django ORM QuerySet转json
    下面是Django中两种常用的ORM查询models.Component.objects.filter(...).all()models.Component.objects.values(...)第一种我们可以使用serializers.serialize("json",c......
  • thinkphp5 如何查询 以逗号间隔的数据
    例如1,2,3,4之类的id或者其他组成的数值字符串存入字段中,然后会有查询的需求,例如我们需要查询包含1的所有的数据,这时我们可以使用find_in_set()函数;$id=4;Db::name('men......
  • 网络通信——HTTP接口访问——移动数据格式JSON
        网络通信的交互数据格式有两大类,分别是JSON和XML。对于App来说,基本采用JSON格式与服务器通信。JSON相比XML的优势主要有两个:(1)手机流量很贵,表达同样的信息,J......
  • php扩展 rabbitmq
    <?php//建立TCP连接对象$connection=newAMQPConnection(['host'=>'127.0.0.1','port'=>'5672','vhost'=>'/','login'=>'guest','......
  • [Java] jackson 和 fastjson 处理 JSON对比
    JSON字符串->对象处理原型数值实体类@Setter@Getter@ToStringpublicclassInfo{privateintage;}测试代码@TestpublicvoidtestString()throwsJso......
  • PHPCMS V9 密码加密传输 密码以明文形式传输
    最近经常遇到用户求助,被安全检测查出密码没有进行加密传输,如图: 被检测出这个问题的大多是后台登录,这个问题解决方法如果按照修复建议来讲的话是比较麻烦的!用户输入......
  • PHP函数基础简章
    $_GET变量PHP$_GET变量在PHP中,预定义的$_GET变量用于收集来自method="get"的表单中的值。$_GET变量预定义的$_GET变量用于收集来自method="get"的表单中......