mid*_*e11 4 c# json system.text.json
我们当前使用 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 | BytePositionInLine:0。” 在 Reader.Read 行。
var fileName = @"D:\MyFile.json";
byte[] data = System.IO.File.ReadAllBytes(fileName);
Utf8JsonReader reader = new Utf8JsonReader(data);
while (reader.Read())
Run Code Online (Sandbox Code Playgroud)
[
{
"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"
}
]
Run Code Online (Sandbox Code Playgroud)
显然,文件是以带有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);
Run Code Online (Sandbox Code Playgroud)
请参阅文档中的更多内容。
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |