1. ホーム
  2. c#

[解決済み] 値のパース時に予期せぬ文字が発生した

2022-01-29 01:57:05

質問

現在、いくつかの問題があります。私はJson.NETでC#を使用しています。問題は、私がいつも得ることです。

{"Unexpected character encountered while parsing value: e. Path ''、 line 0, position 0."}.

で、私がやっているJson.NETの使い方は、次のようなものです。保存すべきクラスがあります。クラスは以下のような感じです。

public class stats
{
    public string time { get; set; }
    public string value { get; set; }
}

public class ViewerStatsFormat
{
    public List<stats> viewerstats { get; set; }
    public String version { get; set; }

    public ViewerStatsFormat(bool chk)
    {
        this.viewerstats = new List<stats>();
    }
}

このクラスのオブジェクトが1つ充填され、保存されます。

 File.WriteAllText(tmpfile, JsonConvert.SerializeObject(current), Encoding.UTF8);

保存部分は問題なく動作し、ファイルが存在し、充填されます。その後、ファイルが読み込まれてクラスに戻されます。

try 
{ 
    ViewerStatsFormat current = JsonConvert.DeserializeObject<ViewerStatsFormat>(tmpfile);
    //otherstuff        
}
catch(Exception ex)
{
    //error loging stuff
}

さて、current=の行で、例外が発生します。

{"Unexpected character encountered while parsing value: e. Path ''、 line 0, position 0."}.

なぜこれが来るのかわかりません。JSONファイルは以下のようなものです -> Click me I am the JSON リンク

どなたか思い当たる方はいらっしゃいますか?

解決方法は?

にJSONを渡していない可能性があります。 DeserializeObject .

からのように見えます。 File.WriteAllText(tmpfile,... そのタイプの tmpfilestring は、ファイルへのパスを含む。 JsonConvert.DeserializeObject はファイルパスではなく JSON 値を取るので、次のような変換は失敗します。 @"c:\temp\fooo" - これは明らかにJSONではありません。