首页技术phpjson转数组?序列化数组转前台json对象

phpjson转数组?序列化数组转前台json对象

编程之家2026-06-17729次浏览

各位老铁们好,相信很多人对phpjson转数组都不是特别的了解,因此呢,今天就来为大家分享下关于phpjson转数组以及序列化数组转前台json对象的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

phpjson转数组?序列化数组转前台json对象

如何正确运用PHP json

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。

1、json_encode()

该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:

$arr= array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

上面代码的输出结果为:

phpjson转数组?序列化数组转前台json对象

{"a":1,"b":2,"c":3,"d":4,"e":5}

再看一个对象转换的例子:

复制代码代码如下:

$obj->body='another post';

$obj->id= 21;

$obj->approved= true;

phpjson转数组?序列化数组转前台json对象

$obj->favorite_count= 1;

$obj->status= NULL;

echo json_encode($obj);

以上代码的输出结果为:

复制代码代码如下:

{

"body":"another post",

"id":21,

"approved":true,

"favorite_count":1,

"status":null

}

由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。

2、索引数组和关联数组

PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。

由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。

比如,现在有一个索引数组:

$arr= Array('one','two','three');

echo json_encode($arr);

其输出结果为:

["one","two","three"]

如果将它改为关联数组:

$arr= Array('1'=>'one','2'=>'two','3'=>'three');

echo json_encode($arr);

结果就变了:

{"1":"one","2":"two","3":"three"}

注意,数据格式从"[]"(数组)变成了"{}"(对象)。

如果你需要将"索引数组"强制转化成"对象",可以这样写

json_encode((object)$arr);

或者:

json_encode($arr, JSON_FORCE_OBJECT);

3、类(class)的转换

下面是一个PHP的类:

复制代码代码如下:

class Foo{

const ERROR_CODE='404';

public$public_ex='this is public';

private$private_ex='this is private!';

protected$protected_ex='this should be protected';

public function getErrorCode(){

return self::ERROR_CODE;

}

}

现在,对这个类的实例进行json转换:

复制代码代码如下:

$foo= new Foo;

$foo_json= json_encode($foo);

echo$foo_json;

输出结果是:

{"public_ex":"this is public"}

可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。

4、json_decode()

该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:

复制代码代码如下:

$json='{"foo": 12345}';

$obj= json_decode($json);

print$obj->{'foo'};// 12345

通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:

$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));

结果就是生成一个PHP对象:

复制代码代码如下:

object(stdClass)#1(5){

["a"]=> int(1)

["b"]=> int(2)

["c"]=> int(3)

["d"]=> int(4)

["e"]=> int(5)

}

如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:

$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json),true);

结果就生成了一个关联数组:

复制代码代码如下:

array(5){

["a"]=> int(1)

["b"]=> int(2)

["c"]=> int(3)

["d"]=> int(4)

["e"]=> int(5)

}

5、json_decode()的常见错误

下面三种json写法都是错的,你能看出错在哪里吗?

复制代码代码如下:

$bad_json="{'bar':'baz'}";

$bad_json='{ bar:"baz"}';

$bad_json='{"bar":"baz",}';

对这三个字符串执行json_decode()都将返回null,并且报错。

第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。

另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。

var_dump(json_decode("Hello World"));//null

php 怎么 字符串 转 json对象

1、打开sublimetext 3编辑器,新建一个空的php文件:

2、首先定义一个数组,调用json_encode方法将数组编码为json格式的字符串,这里需要注意json_encode方法的返回值不是一个JSON对象而是JSON格式字符串,如果要转换成json对象,需要在后面加入参数true,最后转成json后需要将输出编码后的json格式的字符串:

3、最后按下快捷键crtl+s保存,在浏览器查看输出的JSON格式的字符串。以上就是php字符串转json对象的而操作:

php怎么json数据转化为字符串

json数据本身就是一个字符串。

如果说转换,只是说,php数组和json字符串之间的转化,在这里给你介绍php操作json的两个函数

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

说明

mixed json_decode( string$json [, bool$assoc ])

接受一个 JSON格式的字符串并且把它转换为 PHP变量

参数

json

待解码的 json string格式的字符串。

assoc

当该参数为 TRUE时,将返回 array而非 object。

返回值

Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

json_encode—对变量进行 JSON编码

Report a bug说明

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

返回 value值的 JSON形式

Report a bug参数

value

待编码的 value,除了resource类型之外,可以为任何数据类型

该函数只能接受 UTF-8编码的数据

OK,关于phpjson转数组和序列化数组转前台json对象的内容到此结束了,希望对大家有所帮助。

input标签value属性 input标签隐藏积分墙任务平台?内部号申请平台