【发布时间】:2021-05-02 01:21:56
【问题描述】:
我们目前正在使用 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())
[
{
"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"
}
]
【问题讨论】:
-
很明显,文件是用 UTF-8 编码和 BOM 保存的。在没有 BOM 的情况下重新保存它。
-
我们收到 JSON 文件。我们无法改变它们。我们最近使用 Sytem.Text.Json 的 JsonDocument.Parse 成功读取了 JSON,所以我想我们会朝着这个方向前进。
标签: c# json system.text.json