簡體   English   中英

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: S. Path '', line 0, position 0. 僅在特定版本上

[英]Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: S. Path '', line 0, position 0. Only on certain build

我正在努力將我制作的 discord.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,這使得錯誤出現在我的 PC 和 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);
            }
        }

我將代碼更改為這個並且由於某種原因它現在可以工作了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM