C# 使用System.Text.JSON读/写JSON

C# 使用System.Text.JSON读/写JSON,c#,json,system.text.json,C#,Json,System.text.json,我们目前正在使用NewtwonSoft.json,但出于安全原因,需要转到System.Text.json 因此,我们不熟悉System.Text.JSON,在读取以下JSON文件时遇到问题 理想情况下,我们希望读取并最终将每个记录放在网格中的一个单独的行中,ID、名称和ContractTypeID列为a、B和C。我们更喜欢VB.net,但谷歌让我们相信System.Text.JSON中不太支持VB.net。所以C#会起作用。感谢任何能让我们行动起来的反馈。我们尝试使用一个实践C#项目,但出现错

我们目前正在使用NewtwonSoft.json,但出于安全原因,需要转到System.Text.json

因此,我们不熟悉System.Text.JSON,在读取以下JSON文件时遇到问题

理想情况下,我们希望读取并最终将每个记录放在网格中的一个单独的行中,ID、名称和ContractTypeID列为a、B和C。我们更喜欢VB.net,但谷歌让我们相信System.Text.JSON中不太支持VB.net。所以C#会起作用。感谢任何能让我们行动起来的反馈。我们尝试使用一个实践C#项目,但出现错误:

“System.Text.Json.JsonReaderException:”“0xEF”是无效的值开头。行号:0 | BytePositionLine:0。”位于Reader.Read行


显然,该文件是以UTF-8编码和BOM保存的

如果文件包含UTF-8字节顺序标记,请在将字节传递给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);
ReadOnlySpan data=File.ReadAllBytes(文件名);
ReadOnlySpan utf8Bom=新字节[]{0xEF,0xBB,0xBF};
if(data.StartsWith(utf8Bom))
{
data=data.Slice(utf8Bom.Length);
}
Utf8JsonReader=新的Utf8JsonReader(数据);

请参阅。

中的详细信息。显然,该文件是以UTF-8编码方式与BOM一起保存的。在没有BOM的情况下重新保存。我们将收到JSON文件。我们不能改变它们。最近,我们使用Sytem.Text.JSON的JsonDocument.Parse成功地读取了JSON,所以我想我们会朝这个方向前进。你读了吗,包括?明白了。非常感谢。
[
    {
         "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"
    }
]
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);