簡體   English   中英

將值轉換為Json.net類型

[英]Convert value to type Json.net

我使用Json.NET來存儲我的應用程序的某些首選項,但是當我嘗試從文件中獲取值時,出現此錯誤:

Newtonsoft.Json.JsonSerializationException:轉換值“ {” Kepp_Active“:1,” Speech_Words“:0}”以鍵入'MyTestApp.Configs'時出錯。 路徑'',第1行,位置40。

我的代碼:

string jsonContent = File.ReadAllText(filePath);
var configJson = JsonConvert.DeserializeObject<Configs>(jsonContent,
          new JsonSerializerSettings
          {
            NullValueHandling = NullValueHandling.Ignore
          });  

我的配置類:

public class Configs
{
    [JsonProperty("Kepp_Active")]
    public int KeepActive;

    [JsonProperty("Speech_Words")]
    public int Speech;
}

編輯1:

我的配置類:

public class Configs
{
    [JsonProperty("Keep_Active")]
    public int KeepActive;

    [JsonProperty("Speech_Words")]
    public int Speech;
}

錯誤:

Newtonsoft.Json.JsonSerializationException:將值“ {” Keep_Active“:1,” Speech_Words“:0}”轉換為'Placar_Fodinha.Configs'時出錯。 路徑'',第1行,位置40

編輯2:

商店代碼:

Configs cfg = new Configs();
cfg.Speech = 0;
cfg.KeepActive = 1;
string configsJson = JsonConvert.SerializeObject(cfg);                
using (StreamWriter file = File.CreateText(filePath))
{
   JsonSerializer serializer = new JsonSerializer();
   serializer.Serialize(file, configsJson);
}

根據您的最新更新:您序列化“ cfg”兩次。

首先在:

string configsJson = JsonConvert.SerializeObject(cfg); 

第二:

serializer.Serialize(file, configsJson);

這就是為什么保存的JSON字符串如下所示的原因:

“\\”{\\\\ “KeepActive \\\\”:1,\\\\ “SpeechWords \\\\”:0} \\ “”

如果刪除此行:

string configsJson = JsonConvert.SerializeObject(cfg);

並將“ cfg”添加到另一行:

serializer.Serialize(file,cfg);

響應將保存在您的文件中,例如:

“{\\” KeepActive \\ “:1,\\” SpeechWords \\ “:0}”

而且您應該可以反序列化它。

用於保護JSON字符串的代碼應如下所示:

Configs cfg = new Configs();

cfg.Speech = 0;
cfg.KeepActive = 1;

using (StreamWriter file = File.CreateText("myTestFile.txt"))
{

    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(file, cfg);
}

圖片:

使用您的代碼:

在此處輸入圖片說明

使用新代碼:

在此處輸入圖片說明

暫無
暫無

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

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