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