Я пытаюсь выполнить синтаксический анализ ниже json, используя System.Text.Json.JsonDocument
[
{
"Name" : "Test 2",
"NumberOfComponents" : 1,
"IsActive" : true,
"CreatedBy" : "bsharma"
},
{
"Name" : "Test 2",
"NumberOfComponents" : 1,
"IsActive" : true,
"CreatedBy" : "bsharma"
}
]
Код для анализа:
using var jsonDoc = JsonDocument.Parse(inputStream, _jsonDocumentOptions);
Сбой анализа с ошибкой:
System.Text.Json.JsonReaderException
HResult=0x80131500
Message='[' is an invalid start of a property name. Expected a '"'. LineNumber: 1 | BytePositionInLine: 4.
Source=System.Text.Json
StackTrace:
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.JsonDocument.Parse(ReadOnlySpan`1 utf8JsonSpan, Utf8JsonReader reader, MetadataDb& database, StackRowStack& stack)
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 utf8Json, JsonReaderOptions readerOptions, Byte[] extraRentedBytes)
at System.Text.Json.JsonDocument.Parse(Stream utf8Json, JsonDocumentOptions options)
Вход json отправляется через HTTP-запрос. В сообщении об ошибке указывается поместить массив в свойство в форме { "values" : [ .. ] }
, что решает проблему. Есть ли способ получить экземпляр JsonDocument для исходного json или исходный json недействителен?
РЕДАКТИРОВАТЬ: json происходит от сериализации массива:
var jsonOptions = new JsonSerializerOptions
{
WriteIndented = true
};
var pocos = new Container[]
{
new Container { Name= "Test 2", NumberOfComponents = 2, IsActive = true ,CreatedBy = "bsharma" },
new Container { Name= "Test 2", NumberOfComponents = 2, IsActive = true ,CreatedBy = "bsharma" }
};
var json = JsonSerializer.Serialize(pocos, jsonOptions);