[英]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.