我正在将一些JSON直接写入文件,然后在以后读取。然后使用newton将JSON反序列化为对象。
起初我是这样写的,并且运行良好:
using (var sw = File.CreateText(jsonFile))
{
sw.Write(content);
}
然后我遇到了比赛状况,被告知改走这条路线
using (var fs = new FileStream(jsonFile, FileMode.Open, FileAccess.Write,
FileShare.ReadWrite))
{
using (var sr = new StreamWriter(fs))
{
sr.Write(content);
}
}
但是反序列化JSON时,我收到了此消息
Newtonsoft.Json.JsonReaderException:阅读完JSON内容后遇到的其他文本:u。路径“
当我向StreamWriter
(UTF8)添加编码时,我得到了相同的消息,但字符不同。
因此,根据评论的建议,我为流写入器尝试了此操作,以进行编码以删除BOM
var utf8WithoutBom = new System.Text.UTF8Encoding(false);
然后将其添加到流作家。返回了相同的错误,但是这次字符为空。
使用jsonlint编写的JSON(内容)可以使用上述两种方法正确验证。
有人知道为什么第二种方法(使用FileStream
)不起作用吗?如果是这样,您对我应该怎么做有建议?