84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
使用反射技术,自己封装一个类,提供一个方法将任意对象转换成一个json格式的字符串
认证高级PHP讲师
你需要的是GSON这类的工具来帮你实现
既然是自定义的类,那么应该意味着这个类不一定会提供所有字段的getter和setter方法,所以你用反射的思路的正确的。其次可以在项目初始化阶段就把所有的类都使用反射,把所有字段读取并保存下来,可以选择使用类名作为key,然后自定义一个描述类作为value,放进Map中。这个描述类描述了类的字段信息。最后再构造一系列的转化类,这些类针对不同类型的数据做转化,如针对自定义类,则使用自定义类转化器,遇到List类使用List转化器,遇到Stirng则直接输出值。这样的话,在将对象转化为json字符串时,根据类名获取描述类,再遍历描述类的信息,针对不同的字段类型调用不同的转化类将字段输出成字符串,最后拼接这些字符串。以上只是提供一种实现思路, 欢迎探讨。
getter
setter
类名作为key
自定义一个描述类作为value
Map
描述类
转化类
你需要的是GSON这类的工具来帮你实现
既然是自定义的类,那么应该意味着这个类不一定会提供所有字段的
getter
和setter
方法,所以你用反射的思路的正确的。其次可以在项目初始化阶段就把所有的类都使用反射,把所有字段读取并保存下来,可以选择使用
类名作为key
,然后自定义一个描述类作为value
,放进Map
中。这个
描述类
描述了类的字段信息。最后再构造一系列的
转化类
,这些类针对不同类型的数据做转化,如针对自定义类,则使用自定义类转化器,遇到List类使用List转化器,遇到Stirng则直接输出值。这样的话,在将对象转化为json字符串时,根据类名获取描述类,再遍历描述类的信息,针对不同的字段类型调用不同的转化类将字段输出成字符串,最后拼接这些字符串。
以上只是提供一种实现思路, 欢迎探讨。