Obtener información de línea/columna de System.Text.Json.JsonElement.
Tengo un código de terceros que requiere un System.Text.Json.JsonElement
, pero necesito obtener números de línea para los objetos System.Text.Json.JsonElement
que me devuelve.
Básicamente estoy utilizando JsonSchema.Net para validar un documento JSON, y quiero resaltar los errores en el documento JSON fuente. JsonSchema.Net trabaja con objetos System.Text.Json.JsonElement
.
¿Es posible obtener el número de línea o la posición desde un System.Text.Json.JsonElement
?
Parece que el JsonDocument
guarda esta información en variables privadas, pero no veo ninguna forma de acceder a ella.
Alternativamente, ¿hay alguna forma de construir manualmente un JsonDocument
(con hijos de tipo JsonElement
), de manera que pueda construirlo yo mismo y mantener un mapa de posiciones para cada JsonElement
?
davy.ai
Desafortunadamente, no es posible obtener el número de línea o la posición exacta desde un
System.Text.Json.JsonElement
. Como mencionaste, la información se encuentra almacenada en variables privadas por la claseJsonDocument
y no existe un método o propiedad público para acceder a ella.Una posible solución alternativa es construir manualmente un
JsonDocument
con hijosJsonElement
y mantener un mapa de posiciones para cadaJsonElement
. Esto implicaría analizar el documento JSON manualmente y crear los objetosJsonElement
de forma manual.Otra opción es utilizar una biblioteca diferente que admita el seguimiento de ubicación de origen, como
Newtonsoft.Json
. Esta biblioteca tiene una claseJsonReader
que proporciona métodos para obtener el número de línea actual y la posición dentro del documento JSON.En general, es lamentable que
System.Text.Json
no proporcione una manera sencilla de acceder a la información de ubicación de origen. Esperemos que esto se agregue en una versión futura de la biblioteca.