php嵌套class,使用PHP中的类型将嵌套对象序列化/反序列化为JSON

我有扩展抽象类的类。 我需要通过字符串(最好是JSON)创建这些类的实例。

许多对象是嵌套的,许多属性是私有的。 我需要一种方法:

创建完整对象的JSON字符串(带有私有属性和嵌套对象-带有私有属性)。

从JSON字符串创建一个具有正确类型和所有嵌套对象的新对象。

我猜它需要递归。

如果我只是将对象转换为数组,则使用的命名空间最终看起来像废话。

我正在考虑编写一个解析器,在JSON字符串中标记这些类,然后为每个类硬编码一个工厂函数,但这会花费很多时间。

嘿。 我删除了laravel标签,因为似乎没有任何迹象表明它的含义? 如果您认为相关,可以随时添加它,但是请添加为什么它是您的问题。

我建议使用jms序列化器:http://jmsyst.com/libs/serializer

易于使用,可配置并支持您要求的所有功能。

我建议您使用php的序列化功能

在这种情况下,最好使用此函数,因为它存在此目的:您可以将序列化的字符串存储在所需的位置,反序列化后,您将获得具有所有属性的原始PHP对象。

正如您所说,使用JSON,您将不知道对象是什么类(除非您手动将其存储为字符串),并且当然会存在与私有属性有关的所有问题。

我正在构建一个应用程序,另一个应用程序将通过MySQL DB为它提供数据。但是,我也是要构建该应用程序的人,因此我可以做出所有决定。将序列化的字符串转换为JSON是否可行?然后将JSON转换为用于创建对象的序列化字符串?

我不确定是否可以将序列化的字符串存储在JSON中(但可能是),您必须尝试一下。是否有特定原因需要您使用JSON而不是存储普通的序列化字符串?

好。另一个应用程序将通过Javascript前端应用程序创建此数据。我不会在几周内构建该应用程序,所以我不知道我会遇到什么困难。因此,尝试尽可能多地使用JSON来随机整理数据可能是一个好主意。

是的,但是您确定需要通过前端代码创建此数据(关于php对象)吗?如果可以的话,最好使用服务器端代码。即您可以通过ajax调用创建数据

实际数据将在前端创建。您有点用块构建这些对象。因此,即使我使用后端创建对象或序列化数据,也需要从前端提取数据,以描述层次结构,对象类型和数据。

好的,但是我不明白为什么你不能拉一个序列化的字符串,也许我还没有弄清楚你的架构。无论如何,如果我是您,我将尝试检查序列化的PHP字符串是否可以存储在JSON中。如果是的话,我会那样做

谢谢@Moppo。目前,我主要是想掩盖所有将来可能遇到的麻烦。我认为您是对的,我可以提取序列化的字符串。我会尽力做到这一点。然后,我可以编写我的另一个应用程序,以便它生成这种字符串。现在要尝试一下!谢谢。

是的,我建议您进行初步测试,以查看是否可以正确序列化/反序列化对象,并在应用程序正常工作时按照您的方式传递序列数据

有三种方法可以执行此操作:JSON,序列化和var_export。

使用JSON,它仅适用于stdClass对象,但它易于阅读,并且可以在PHP之外使用。

序列化可与stdClass以外的类的实例一起使用,但是可能很难读取,只能由PHP使用。

http://php.net/manual/zh/function.serialize.php

var_export输出PHP代码以创建对象(因此您可以将其写入PHP文件),它非常易于阅读,但不能在PHP外部使用。对象将需要具有set state方法。

http://php.net/manual/zh/function.var-export.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值