Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:S. 路径,第 0 行,位置 0。仅在某些构建上



我正在将我制作的一个不和谐的.net机器人移植到树莓派上,当我在圆周率上构建和运行它时,我遇到了一个错误,而当我在其他地方构建和运行时,这个错误不会出现。

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: S. Path '', line 0, position 0.

这是我在运行项目时遇到的错误(机器人的令牌数据存储在json文件中(,当我在PC上的visual studio中运行项目时,它们会被完全读取,但当我在PI上构建项目并运行它时,我会遇到这个错误。

我发现了一个关于这个错误的stackoverflow页面,似乎没有任何解决方案能解决我的问题。

  • 我通过验证网站运行了json数据,它检查出了

  • 我看到一篇帖子说这可能是一个UTF编码问题,所以我尝试了一个修复方法,在这里我传递了UTF-8编码的文本,但出现了同样的错误。然后我尝试使用UTF-32,这使得错误出现在我的电脑和PI上!

  • 我有一种感觉,这与它的编码有关,但我真的被困在这里,我再也找不到讨论这个问题的论坛了。任何建议或想法都将不胜感激!

这是引发错误的代码,JsonFromPath从文件中返回原始json数据,DataFromJson是对其进行反序列化的,这就是引发错误的地方。

public string JsonFromPath(string path)
{
try
{
string result;
using (var reader = new StreamReader(path))
{
result = reader.ReadToEnd();
}
return result;
}
catch(Exception ex) { return ex.ToString(); }
}
public T DataFromJson(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
public T DataFromPath(string path)
{
try
{
string rawJson;
using (var reader = new StreamReader(path))
{
rawJson = reader.ReadToEnd();
}
return JsonConvert.DeserializeObject<T>(rawJson);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return default(T);
}
}

我把代码改成了这个,出于某种原因,它现在可以工作了

最新更新