.NET / Google目录API
我正在处理目录API中的一些属性。
例如,在手机上,我可以做这样的事情:
System.Collections.Generic.IList <Google.Apis.Admin.Directory.directory_v1.Data.UserPhone> phone = results.Phones我会得到与用户相关的电话号码列表。因此,这与我目前正在处理的所有其他对象一起工作,直到我在目录API中遇到"location“(似乎是"UserLocation”)为止。在调用getUser()时,我确实验证了对象看起来与位置json匹配。
这一行:
System.Collections.Generic.IList<Google.Apis.Admin.Directory.directory_v1.Data.UserLocation> loc = results.Locations;无效/不编译:
“无法隐式地将类型'object‘转换为’System.Collection.Generic.IList‘。”
当我在API中检查getUser的结果时,这个字段没有其他字段的类型(例如电话),它是一个通用的"object {Newtonsoft.JSon.linq.JArray}"
没什么大不了的,我尝试使用以下方法手动转换JSON数组:(隐式输入,因此我确保得到了正确的对象) System.Collections.Generic.IList location =System.Collections.Generic.IList
这也不编译:
“不能隐式地将类型'Google.Apis.Admin.Directory.directory_v1.Data.UserLocation‘转换为’System.Collection s.Generic.IList‘。存在显式转换(您缺少强制转换吗?)
我没有在google管理面板中看到多个位置,所以我认为这可能是一个数组错误报告,所以我尝试了这一行:
Google.Apis.Admin.Directory.directory_v1.Data.UserLocation location = (Google.Apis.Admin.Directory.directory_v1.Data.UserLocation)results.Locations;它编译ok / no错误或警告。但当我逃跑的时候:
Google.Apis.Admin.Directory.directory_v1.Data.UserLocation;‘:无法将类型为Newtonsoft.Json.Linq.JArray的对象转换为Newtonsoft.Json.Linq.JArray类型
首先,这看起来像是中的一个bug,我将在它上打开一个bug票据。但我需要在短期内克服这个问题。如何将此对象转换为UserLocation[]类型?
发布于 2019-06-20 14:09:41
找到答案后,这是将对象反序列化为iList的方法(强类型但不需要这样做):
IList<Google.Apis.Admin.Directory.directory_v1.Data.UserLocation> location =
JsonConvert.DeserializeObject<IList<Google.Apis.Admin.Directory.directory_v1.Data.UserLocation>>(results.Locations.ToString());https://stackoverflow.com/questions/56651709
复制相似问题