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

问题描述

我正在将我制作的 discord.net 机器人移植到树莓派上,当我在 pi 上构建和运行它时遇到错误,而当我在其他任何地方构建和运行它时却没有出现。

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

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

我在这个错误上找到了一个 stackoverflow 页面,但似乎没有一个解决方案能解决我的问题。

这是抛出错误的代码,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);
}

标签: c#json.net-corejson.net

解决方案


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);
            }
        }

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


推荐阅读