phpjson格式化输出,php返回json格式

http://www.itjxue.com  2023-01-22 18:07  来源:未知  点击次数: 

php可以JSON输出json格式吗

php直接输出json格式,有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:

?php

header('Content-type:text/json');

//这句是重点,它告诉接收数据的对象此页面输出的是json数据;

$json={"name":"yovae","password":"12345"};

//虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的;

echo $json;

?你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢( ̄(エ) ̄)

如何将JSON字符串格式化输出

一般在项目中,我们可能会经常需要对返回结果进行格式化处理,比如先把返回结果对象转换为JSON格式的字符串,然后再将其输出。这个JSON格式化处理的过程,我们在前端或者后端都可以实现。

在JavaScript中,我们如果需要将js对象转换为json字符串,可以通过 JSON.stringify() 来实现。

相反,如果需要将json字符串转换为js对象,可以通过 JSON.parse() 来实现。

在Python3中,我们如果需要将Python对象转换为json字符串,可以通过 json.dumps() 来实现。

相反,如果需要将json字符串转换为Python对象,可以通过 json.loads() 来实现。

php如何输出中文json格式字符串

php如何输出中文json格式字符串

如何对json格式的字符串进行转换,php提供了两个函数:

json_encode 对变量进行 JSON 编码

json_decode 对 JSON 格式的字符串进行编码

下面看个实例:

$arr = ['a', 'b', 'c'];echo json_encode($arr);

输出为:

["a","b","c"]

但是,当我们在数组中放入中文的时候,就会出现问题:

$arr = [ '世界', '你好',

];echo json_encode($arr);

输出的结果为:

["\u4e16\u754c","\u4f60\u597d"]

这个结果显然不是我们想要的,但是为什么出现这个呢?

因为当我们的值中包含中文时,php对他进行json编码时底层会对中文进行unicode编码,导致结果不可读,那该怎么解决呢?

方法一

可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程,先将中文字段进行urlencode,然后json_encode,最后再用urldecode处理结果,便可以正常显示中文。具体代码如下:

$arr = [ '世界', '你好',

];echo urldecode(json_encode(array_map('urlencode', $arr)));

输出结果为:

["世界","你好"]

方法二

自PHP5.4版本,官方就已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。具体代码如下:

$arr = [ '世界', '你好',

];echo json_encode($arr, JSON_UNESCAPED_UNICODE);

["世界","你好"]

看吧,这才是我们想要的结果 :)

php 输出json及显示json中的中文汉字详解及实例

php

输出json及显示json中的中文汉字

在php中,我们经常需要将数组输出json,只需要使用json_encode函数处理一下数组即可,但有的时候数组里面有中文,使用json_encode函数处理后中文字符被编码成了Unicode,如何才能在json中显示中文呢?请看下文。

首先介绍一下php输出json格式:

一种最简单的用法,就是把数组直接输出为json,如下:

?php

$arr

=

array('p1'='ni"hao','p2'=2,'ch'='码农你好!');

$json

=

json_encode($arr);

echo

$json;

?

输出的结果为:

{"p1":"ni\"hao","p2":2,"ch":"\u7801\u519c\u4f60\u597d\uff01"}

这里要注意:

双引号在json中会被自动编码为\",这个很好理解,js中字符串中是不允许出来单引号、双引号和反斜杠的。

中文字符被编码成了Unicode

如果是写接口,那直接这样输出就够了,中文无需去做处理。等到了客户端,再去把Unicode的中文转成汉字即可。但如果要在服务器端直接输出汉字出来,那我们可以做如下处理。

?php

$arr

=

array('p1'='nihao','p2'=2,'ch'='码农你好!');

$json

=

json_encode($arr);

echo

decodeUnicode($json);

function

decodeUnicode($str){

return

preg_replace_callback('/\\\\u([0-9a-f]{4})/i',

create_function(

'$matches',

'return

mb_convert_encoding(pack("H*",

$matches[1]),

"UTF-8",

"UCS-2BE");'

),

$str);

}

?

输出:

{"p1":"ni\"hao","p2":2,"ch":"码农你好!"}

这个操作很简单,其实就是把输出结果匹配一下,把Unicode还原成了汉字。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(责任编辑:IT教学网)

更多

推荐其他WEB语言文章