我们目前正在使用NewtwonSoft.json,但出于安全原因需要迁移到System.Text.JSON。
因此,我们是System.Text.JSON新手,在读取以下JSON文件时遇到困难。
理想情况下,我们希望阅读并最终将每条记录放在网格中的一个单独的行中,其中ID、名称和ContractTypeID分别为A、B和C列。我们更喜欢VB.net,但谷歌搜索使我们相信VB.net在System.Text.JSON中不太受支持。因此C#将起作用。感谢任何能让我们继续前进的反馈。我们尝试过使用实践C#项目,但得到了错误:
"System.Text.Json.JsonReaderException:‘0xEF’是值的无效开始。LineNumber: 0\x BytePositionInLine: 0。“在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"
}
]发布于 2021-05-01 17:21:21
显然,该文件是用BOM以UTF-8编码保存的.
如果文件包含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);请参阅文档中的更多内容。
https://stackoverflow.com/questions/67339264
复制相似问题