Optional type fields throw NPE when deserializing null values
Los mantenedores suelen responder en 1 día
@hemasekhar-p ya está trabajando en esto.
Desde el 7/1/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
When API response contains a field with a null value, and the corresponding field in the SDK entity class is defined as type Optional, a NullPointerExceptionis thrown during JSON deserialization.
Call Vertex AI:
GenerateContentResponse response =
client.models.generateContent("gemini-2.5-flash", "What is your name?", null);
Here is the response body, inlineData is one of null fields:
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "I am a large language model, trained by Google.",
"inlineData": null,
"functionCall": null,
"functionResponse": null,
"executableCode": null,
"codeExecutionResult": null
}
]
},
"finishReason": "STOP",
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE",
"blocked": null
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "NEGLIGIBLE",
"blocked": null
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE",
"blocked": null
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"blocked": null
}
],
"citationMetadata": null,
"tokenCount": null,
"groundingAttributions": null,
"groundingMetadata": null,
"index": null
}
],
"modelVersion": "gemini-2.0-flash-001",
"promptFeedback": null,
"usageMetadata": {
"promptTokenCount": 4,
"cachedContentTokenCount": null,
"candidatesTokenCount": 12,
"toolUsePromptTokenCount": null,
"thoughtsTokenCount": null,
"totalTokenCount": 16,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"cacheTokensDetails": null,
"candidatesTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 12
}
],
"toolUsePromptTokensDetails": null
}
}
When the response returns and begins parsing, the following exception is thrown:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: N/A
at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.google.genai.Test$MockResponse["candidates"]->java.util.ArrayList[0]->com.google.genai.Test$Candidate["content"]->com.google.genai.Test$Content["parts"]->java.util.ArrayList[0]->com.google.genai.types.AutoValue_Part$Builder["inlineData"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:275)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:649)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:637)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:173)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:218)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:360)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:360)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4944)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3055)
at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3519)
at com.google.genai.JsonSerializable.fromJsonNode(JsonSerializable.java:173)
... 1 more
Caused by: java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:209)
at java.base/java.util.Optional.of(Optional.java:113)
at com.google.genai.types.AutoValue_Part$Builder.inlineData(AutoValue_Part.java:302)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:170)
... 23 more
The reason is that Optional.of requires nonnull parameter:
- Lenguaje dominante
- Java
- Estrellas
- 398
- Forks
- 126
- Merge medio
- 1 d 12 h
- PR fusionados (30 d)
- 71
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de googleapis/java-genai
-
ResponseStream.close() can block on the reader lock before closing the HTTP responsePosiblemente ocupada @hirematha la tomó hace 1 día. Abiertopriority: p2 type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
googleapis/java-genai#1372 ·
Los mantenedores suelen responder en 1 día
-
Interactions API: GaosClientException.getMessage() only returns "400 . API error occurred" and omits the server error detailsPosiblemente ocupada @hemasekhar-p la tomó hace 25 días. Abiertopriority: p2 type: bug
googleapis/java-genai#1282 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Interactions API: store(false) omits "id", breaking Interaction and InteractionCompletedEvent deserializationPosiblemente ocupada @hemasekhar-p la tomó hace 25 días. Abiertopriority: p2 type: bug
googleapis/java-genai#1281 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Interaction.outputText() always returns Optional.empty() (SDK-computed field is never populated)Posiblemente ocupada @hemasekhar-p la tomó hace 25 días. Abiertopriority: p2 type: bug
googleapis/java-genai#1280 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Gen AI with structured output - `propertyOrdering` in Python vs. Java implementationsPosiblemente ocupada @hemasekhar-p la tomó hace 79 días. Abiertopriority: p3 type: feature request
googleapis/java-genai#1169 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de googleapis/java-genai
Issues similares
-
bug/错误
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
FCL-Team/FoldCraftLauncher#1982 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[BUG] micronaut-serde-oracle-jdbc-json brings a second OJDBC driver onto the runtime classpathPosiblemente ocupada @ZARAYACH la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
micronaut-projects/micronaut-serialization#1494 · 4 comentarios ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
vitruv-tools/Vitruv-Change#600 ·
Los mantenedores suelen responder en 1 día
-
code-health feature/sync OS/Android QA/Test-Plan-Specified QA/Yes
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
brave/brave-browser#60327 ·
Los mantenedores suelen responder en 1 día