-
Notifications
You must be signed in to change notification settings - Fork 143
Description
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 withnull
values. For example, a response might contain:{ "displayName": "John Doe", "jobTitle": null, "mobilePhone": "123-456-7890", "officeLocation": null, // ... other properties }
In this example,
jobTitle
andofficeLocation
are explicitly present withnull
values. -
Using Microsoft Graph Java SDK:
I am using themicrosoft-graph
SDK (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 deserializedUser
object, properties that hadnull
values in the raw API response are seemingly filtered out or omitted during the deserialization process.After retrieving the
User
object 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 theBackingStore
layer), only the keys with non-null values are present. The properties that werenull
in the original API response are entirely absent from the deserializedUser
object'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-graph
version: [6.19.0]- Java Version: [24.0.1]