84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
使用反射技术,自己封装一个类,提供一个方法将任意对象转换成一个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字串時,根據類別名稱獲取描述類,再遍歷描述類的信息,針對不同的字段類型調用不同的轉化類將字段輸出成字符串,最後拼接這些字符串。
以上只是提供一種實現思路, 歡迎探討。