es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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 clase JsonDocument 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 hijos JsonElement y mantener un mapa de posiciones para cada JsonElement. Esto implicaría analizar el documento JSON manualmente y crear los objetos JsonElement 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 clase JsonReader 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.

Comments are closed.