json php session,将JSON数据保存到SESSION出现问题

博客讨论了在PHP中处理JSON数据时遇到的问题,包括反序列化后的数据结构变化以及如何正确地将数据存储到Session。作者提到在反序列化后使用json_encode返回给客户端时出现[object Object]的情况,以及对于复杂数据结构在前后台传递的考虑。解决方案是避免不必要的序列化和反序列化步骤,直接将JSON数据存入Session。
摘要由CSDN通过智能技术生成

客户端传递的JSON数据:

[ { "category_id": 0, "category_products": [ [ { "para_name": "品牌", "para_val": "海飞丝" }, { "para_name": "生产日期", "para_val": "2015-08-11" } ], [ { "para_name": "品牌", "para_val": "新丝路" }, { "para_name": "生产日期", "para_val": "2015-08-11" }, { "para_name": "适用发质", "para_val": "干枯、毛躁、油性头发" } ] ] }, { "category_id": 1, "category_products": [ [ { "para_name": "品牌", "para_val": "潘婷" }, { "para_name": "生产日期", "para_val": "2015-06-11" } ] ] }]

通过序列化和反序列化后取出来的数据就和上面的不一样了!我该怎么办?这是在PHP中反序列化后取出来的数据:

a: 2: { i: 0;O: 8: "stdClass": 2: { s: 11: "category_id";i: 0;s: 17: "category_products";a: 2: { i: 0;a: 2: { i: 0;O: 8: "stdClass": 2: { s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 9: "海飞丝"; }i: 1;O: 8: "stdClass": 2: { s: 9: "para_name";s: 12: "生产日期";s: 8: "para_val";s: 10: "2015-08-11"; } }i: 1;a: 3: { i: 0;O: 8: "stdClass": 2: { s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 9: "新丝路"; }i: 1;O: 8: "stdClass": 2: { s: 9: "para_name";s: 12: "生产日期";s: 8: "para_val";s: 10: "2015-08-11"; }i: 2;O: 8: "stdClass": 2: { s: 9: "para_name";s: 12: "适用发质";s: 8: "para_val";s: 30: "干枯、毛躁、油性头发"; } } } }i: 1;O: 8: "stdClass": 2: { s: 11: "category_id";i: 1;s: 17: "category_products";a: 1: { i: 0;a: 2: { i: 0;O: 8: "stdClass": 2: { s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 6: "潘婷"; }i: 1;O: 8: "stdClass": 2: { s: 9: "para_name";s: 12: "生产日期";s: 8: "para_val";s: 10: "2015-06-11"; } } } }}

回复讨论(解决方案)

你的第二段数据是 序列化的

你的第二段数据是 序列化的

试了,确实是没有反序列化就取出来就会这样子。

不过我想反序列化后再次输出给客户端,通过Ajax 返回json,我再次json_encode 反序列化的数据,通过console.log出来变成[object object] 了,这是正常的吗?

我不知道你的应用场景

你的第一段数据是 json 串,并不会序列化成第二段数据

console.log出来变成[object object] 是正确的

看到你有stdclass 说明你是对返回的json进行了decode 后面那个json_decode($json,1); true的参数加上

当然 后面urlcode什么的就看你自己的了

ps 为什么要多此一举decode encode 直接序列化反序列好了

我不知道你的应用场景

你的第一段数据是 json 串,并不会序列化成第二段数据

console.log出来变成[object object] 是正确的

我在服务端获取原始JSON串后,通过json_decode将JSON串转化成数组对象,然后序列化这个数组对象,赋值给$_SESSION变量。之所以这么做,因为我的数据是两级,然后数目不固定。类似百度经验那样的后台录入界面。所以我通过json进行前后台数据传递,在最终发布内容之前,先将数据暂存在SESSION中,任何增删改查都不用经过数据库(这种方法试过,因为数据关联为两层结构,增删改查非常困难)。

不知我这种做法是否恰当,还有更好的解决方案?

那也没必要序列化,直接存入 session 就行了

我不知道你的应用场景

你的第一段数据是 json 串,并不会序列化成第二段数据

console.log出来变成[object object] 是正确的

前端界面操作截图

请问还有更好的解决办法吗?

那也没必要序列化,直接存入 session 就行了

GOOD!果然不需要序列化,多此一举。Thank You!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值