microsoftgraph / microsoftgraph/msgraph-sdk-java
The Api response not match with sdk response.
还没有人认领这个 Issue。
- 主要语言
- Java
- 星标
- 444
- 派生
- 154
- 平均合并
- 18 小时 28 分钟
- 30 天内合并 PR
- 4
描述
Issue: Null Values Not Being Deserialized for Microsoft Graph API Responses via Java SDK
Description:
I am encountering an unexpected behavior when using the Microsoft Graph Java SDK to retrieve user data. Specifically, properties with null values in the API response are not being included in the deserialized object when using the SDK, while they are present when making a direct API call.
Detailed Scenario:
-
Direct API Call (e.g., Postman):
When I make a direct GET request to the Microsoft Graph API (e.g.,https://graph.microsoft.com/v1.0/me) using a tool like Postman, the JSON response includes all properties, even those withnullvalues. For example, a response might contain:{ "displayName": "John Doe", "jobTitle": null, "mobilePhone": "123-456-7890", "officeLocation": null, // ... other properties }In this example,
jobTitleandofficeLocationare explicitly present withnullvalues. -
Using Microsoft Graph Java SDK:
I am using themicrosoft-graphSDK (version 6.19.0) and have initialized aGraphServiceClient. When I perform a similar operation to retrieve user data (e.g.,graphServiceClient.me().buildRequest().get()), and then attempt to access the deserializedUserobject, properties that hadnullvalues in the raw API response are seemingly filtered out or omitted during the deserialization process.After retrieving the
Userobject and attempting to access its members, or after performing serialization of this SDK-generated object (especially when dealing with the Kiota-generated models and potentially abstracting theBackingStorelayer), only the keys with non-null values are present. The properties that werenullin the original API response are entirely absent from the deserializedUserobject's fields or when re-serializing the object.
Expected Behavior:
I expect the Microsoft Graph Java SDK's deserialization process to faithfully represent the entire API response, including properties that have null values. These null properties should be present in the deserialized User object, allowing me to differentiate between a property that is genuinely absent from the response and one that is explicitly present but with a null value.
Question/Request:
Is there any configuration or setting available within the Microsoft Graph Java SDK (or the underlying Kiota libraries) that allows for the deserialization of properties with null values, ensuring they are retained in the resulting Java objects? My goal is to prevent the implicit filtering of these null-valued keys.
SDK Version: :
microsoft-graphversion: [6.19.0]- Java Version: [24.0.1]
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先使用 microsoft-graph 6.19.0 重现 GraphServiceClient.me().buildRequest().get() 的行为,将 Microsoft Graph 的直接响应与反序列化后的 User 对象及其重新序列化后的形式进行比较。然后检查 Kiota 生成的模型和 BackingStore 的行为,以确定是否可以区分显式为 null 的属性和不存在的属性。完成的标准是记录可用的配置,或确认 SDK 不会保留这种区别。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- api
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 35/100