扫码关注官方订阅号
使用反射技术,自己封装一个类,提供一个方法将任意对象转换成一个json格式的字符串
认证高级PHP讲师
你需要的是GSON这类的工具来帮你实现
既然是自定义的类,那么应该意味着这个类不一定会提供所有字段的getter和setter方法,所以你用反射的思路的正确的。 其次可以在项目初始化阶段就把所有的类都使用反射,把所有字段读取并保存下来,可以选择使用类名作为key,然后自定义一个描述类作为value,放进Map中。 这个描述类描述了类的字段信息。 最后再构造一系列的转化类,这些类针对不同类型的数据做转化,如针对自定义类,则使用自定义类转化器,遇到List类使用List转化器,遇到Stirng则直接输出值。 这样的话,在将对象转化为json字符串时,根据类名获取描述类,再遍历描述类的信息,针对不同的字段类型调用不同的转化类将字段输出成字符串,最后拼接这些字符串。 以上只是提供一种实现思路, 欢迎探讨。
getter
setter
类名作为key
自定义一个描述类作为value
Map
描述类
转化类
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你需要的是GSON这类的工具来帮你实现
既然是自定义的类,那么应该意味着这个类不一定会提供所有字段的
getter和setter方法,所以你用反射的思路的正确的。其次可以在项目初始化阶段就把所有的类都使用反射,把所有字段读取并保存下来,可以选择使用
类名作为key,然后自定义一个描述类作为value,放进Map中。这个
描述类描述了类的字段信息。最后再构造一系列的
转化类,这些类针对不同类型的数据做转化,如针对自定义类,则使用自定义类转化器,遇到List类使用List转化器,遇到Stirng则直接输出值。这样的话,在将对象转化为json字符串时,根据类名获取描述类,再遍历描述类的信息,针对不同的字段类型调用不同的转化类将字段输出成字符串,最后拼接这些字符串。
以上只是提供一种实现思路, 欢迎探讨。