![](/img/trans.png)
[英]Read from json file into IEnumerable using System.Text.Json
[英]Read/Write JSON using System.Text.Json
我们目前正在使用 NewtwonSoft.json 但出于安全原因需要移至 System.Text.JSON。
因此,我们是 System.Text.JSON 的新手,并且无法读取以下 JSON 文件。
理想情况下,我们希望读取并最终将每条记录放在 Grid 中的单独行中,ID、Name 和 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"
}
]
很明显,文件是用 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);
在文档中查看更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.