我使用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);
}
答案 0 :(得分:0)
根据您的上次更新:您将“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);
}
图片:强>
使用您的代码:
使用新代码: