Estamos usando NewtwonSoft.json actualmente, pero necesitamos pasar a System.Text.JSON por razones de seguridad.
Entonces, somos nuevos en System.Text.JSON y tenemos problemas para leer el siguiente archivo JSON.
Idealmente, nos gustaría leer y eventualmente colocar cada registro en una fila separada en una cuadrícula con la ID, el nombre y el ID del tipo de contrato como columnas A, B y C. Prefiero VB.net, pero buscar en Google nos ha llevado a creer que VB.net no es compatible. mucho en System.Text.JSON. Entonces C # funcionará. Agradecemos cualquier comentario que nos ayude a continuar. Hemos intentado usar un proyecto C# de práctica pero obtenemos un error:
"System.Text.Json.JsonReaderException: '' 0xEF ' es un inicio no válido de un valor. LineNumber: 0 | BytePositionInLine: 0". en la línea Reader.Read.
var fileName = @"D:\MyFile.json"; byte[] data = System.IO.File.ReadAllBytes(fileName); Utf8JsonReader reader = new Utf8JsonReader(data); while (reader.Read()) [ { "ID": "001", "Name": "INT SYS CO", "ContractTypeID": "CPAF" }, { "ID": "002", "Name": "PLT", "ContractTypeID": "CPFF" }, { "ID": "003", "Name": "SBAND", "ContractTypeID": "CPIF" }, { "ID": "004", "Name": "SE", "ContractTypeID": "CPIF_PI" }, { "ID": "005", "Name": "SPE", "ContractTypeID": "FFP" } ]Obviamente, el archivo se guarda en codificación UTF-8 con BOM.
Si el archivo contiene una marca de orden de bytes UTF-8, elimínela antes de pasar los bytes a Utf8JsonReader.
ReadOnlySpan<byte> data = File.ReadAllBytes(fileName); ReadOnlySpan<byte> utf8Bom = new byte[] { 0xEF, 0xBB, 0xBF }; if (data.StartsWith(utf8Bom)) { data = data.Slice(utf8Bom.Length); } Utf8JsonReader reader = new Utf8JsonReader(data);Ver más en la documentación .