php将json字符串转为对象,php json字符串转为数组或对象

从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach  遍历即可

$array = get_object_vars($test);

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

首先要用 json_decode 对 JSON 格式的字符串进行编码,

$students = json_decode($json);

直接在PHP文件用$students :

for($i=0;$i

echo "姓名:".$students[$i]['name']."年龄:".$students[$i]['age']."专业:".$students[$i]['subject']."
";

}

则报错如下:

Fatal error: Cannot use objectof type stdClass as array in D:\wamp\www\test.phpon line 18

这时候打印一下 $students :

var_dump($students);

会输出:

array(2) {

[0]=>

object(stdClass)#2 (4) {

["id"]=> string(1)"1"

["name"]=> string(9)"张雪梅"

["age"]=> string(2)"27"

object(stdClass)#3 (4) {                              这个就说明转换的json字符串转为对象而非数组,请看下面的红色背景字

["subject"]=>string(24) "计算机科学与技术"

}

[1]=>

["id"]=> string(1)"2"

["name"]=> string(9)"张沛霖"

["age"]=> string(2)"21"

["subject"]=> string(12) "软件工程"

}

}

可见,返回的结果是 object 而非 array。应以对象形式访问:

foreach($students as $obj){

echo "姓名:".$obj->name."年龄:".$obj->age."专业:".$obj->subject."
";

}

输出结果为:

姓名:张雪梅   年龄:27   专业:计算机科学与技术

姓名:张沛霖   年龄:21   专业:软件工程

mixedjson_decode ( string$json [, bool$assoc ] )

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

json_decode 可接收两个参数:

json:待解码的jsonstring 格式的字符串。

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

$students = json_decode($json,true);

这时打印一下 $students :

var_dump($students);

输出:

array(2) {

[0]=>

array(4) {

["id"]=> string(1)"1"

["name"]=> string(9)"张雪梅"

["age"]=> string(2)"27"

["subject"]=>string(24) "计算机科学与技术"

}

[1]=>

array(4) {

["id"]=> string(1)"2"

["name"]=> string(9)"张沛霖"

["age"]=> string(2)"21"

["subject"]=>string(12) "软件工程"

}

}

这时,$students 就是个数组了,可以直接用:

for($i=0;$i

echo "姓名:".$students[$i]['name']."年龄:".$students[$i]['age']."专业:".$students[$i]['subject']."
";

}

输出结果为:

姓名:张雪梅   年龄:27   专业:计算机科学与技术

姓名:张沛霖   年龄:21   专业:软件工程

总结:

在PHP代码中处理JSON 格式的字符串的两种方法:

方法一:

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

$students= json_decode($json);//得到的是 object

foreach($studentsas $obj){

echo "姓名:".$obj->name."   年 龄:".$obj->age."   专 业:".$obj->subject."
";

}

方法二:

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

$students= json_decode($json, true);//得到的是 array

for($i=0;$i

echo "姓名:".$students[$i]['name']."   年 龄:".$students[$i]['age']."   专 业:".$students[$i]['subject']."
";

}

js将form表单序列化[json字符串、数组、对象]

1.序列化为字符串 $("#Form").serialize();//name=zhangsan&sex=1&age=20   2.序列化为数组 var formD ...

ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)

ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...

DataTable转json字符串,jQuery.parseJSON()把json字符串转为标准的json对象格式

1.string res = DataTableToJson.DataTable2Json(dt);讲DataTable转换为json字符串 http://www.365mini.com/page/j ...

小程序json字符串转为对象

小程序里json字符串转为对象使用JSON.parse()方法转变无效, 看报错提示有单引号“ ' ” 因为单引号而无效, 将单引号全改双引号即可. 报错如下: VM11050:1 thirdScri ...

json字符串转为json对象-jQuery.parseJSON()

...

解决json字符串转为对象时LocalDateTime异常问题

1 出现异常 这次的异常出现在前端向后端发送请求体里带了两个日期,在后端的实体类中,这两个日期的格式都是JDK8中的时间类LocalDateTime.默认情况下,LocalDateTime只能解析20 ...

js中json字符串转成js对象

json字符串转成js对象我所知的方法有2种: //json字符串转换成json对象 var str_json = "{name:'liuchuan'}"; //json字符串 / ...

JSON字符串转为JSON对象

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是对象,所以,JSON对象(js对象)和JSON字符串之间的相互转换是关键. JSON可以有两种格式,一种是对象格式的,另一种是数 ...

C# -- 把json字符串转为对象并读取各属性的值

前面2种方法是不需要声明一个Json字符串的类型即可把Json字符串转换为Dictionary对象 而第3种方法则是声明一个Json字符串的强类型对象,然后反序列化为该对象的数据. List

随机推荐

DOCTYPE的详细图解

之前有一次写代码的时候忘记写了 导致样式的效果一直有点问题,查了很久才发现时候这个的锅.之后自己详细的来查找了DOCTYPE的作用. 在目前,基本上都是采用浏 ...

[cocoapods]安装cocoapods

如果你的电脑已经安装过cocoapods了,但是不知道怎么用,请直接跳转到第8步 在安装之前,我们先来了解什么是cocoapods 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONK ...

httpcomponents 学习1--并发多线程GET

package org.apache.http.examples.client; import org.apache.http.HttpEntity; import org.apache.http.H ...

js_sl 无缝切换

...

iOS开发 -- 发送JSON数据给服务器

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.URL NSURL *url = [NSURL URLW ...

MySQ binlog三种模式

MySQ binlog三种模式及设置方法 1.1 Row Level  行模式 日志中会记录每一行数据被修改的形式,然后在slave端再对相同的数据进行修改 优点:在row level模式下,bin- ...

jQuery File Upload 插件 php代码分析

jquery file upload php代码分析首先进入构造方法 __construct() 再进入 initialize()因为我是post方式传的数据  在进入initialize()中的po ...

HBase数据的导入和导出

查阅了几篇中英文资料,发现有的地方说的不是很全部,总结在此,共有两种命令行的方式来实现数据的导入导出功能,即备份和还原. 1 HBase本身提供的接口 其调用形式为: 1)导入 ./hbase org ...

MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结

1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...

使用QNetworkAccessManager实现Qt的FTP下载服务

从Qt5开始,官方推荐使用QNetworkAccessManager进行Ftp和http的上传和下载操作:Qt4中使用的QtFtp模块即作为独立模块,需要自己从github上进行下载编译后使用(官方地 ...

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值