WPF/C# 用 Newtonsoft 在重写 .json 之前有一个条件(if / else)(真 / 假值)
Posted
技术标签:
【中文标题】WPF/C# 用 Newtonsoft 在重写 .json 之前有一个条件(if / else)(真 / 假值)【英文标题】:WPF/C# With Newtonsoft have a condition (if / else) before rewriting .json (true / false value) 【发布时间】:2021-12-15 19:46:35 【问题描述】:我是一个初学者,在 WPF 应用程序中,我只需要在几个值上重写一个外部 json。值只有“真”和“假”。 像这样:
"option1": false,
"option2": false,
"option3": true,
我只使用按钮,例如“激活”、“停用”
使用 NewtonSoft.Json 我找到了这个方法,它可以很好地修改 json,但我不知道如何创建一个条件,以便如果值已经是“真”,那么消息框会显示“值已经真的”。
private void Activate_Click(object sender, RoutedEventArgs e)
string myfile = "myfile.json";
if (File.Exists(myfile))
string jsonString = File.ReadAllText(myfile);
JObject jObject = JsonConvert.DeserializeObject(jsonString) as JObject;
JToken jToken = jObject.SelectToken("option1");
jToken.Replace(true);
string updatedJsonString = jObject.ToString();
File.WriteAllText(myfile, updatedJsonString);
MessageBox.Show("Option true");
else
MsgError();
提前感谢您的帮助:)
【问题讨论】:
我在 json 中看到option1
在代码中看到 enableoption1
。你确定这些是正确的?
抱歉,复制错误^^
只需将您的 jtoken 转换为 bool。
这能回答你的问题吗? converting json bool values to C# bool values
【参考方案1】:
只需将 jToken 转换为 bool
if((bool)jToken)
MessageBox.Show("Option1 is true");
【讨论】:
谢谢!如果我这样写,看起来效果很好。if ((bool)jToken is false) // message
但这是个好方法吗?
或者你可以这样写 (!(bool)jToken) 或者用 == 或 != true 代替 "is"。
但我总是更喜欢这个 (!(bool)token)以上是关于WPF/C# 用 Newtonsoft 在重写 .json 之前有一个条件(if / else)(真 / 假值)的主要内容,如果未能解决你的问题,请参考以下文章
第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonResult
C# 用Newtonsoft.Json 修改 添加 JSON
Newtonsoft.Json在转换指定时间格式时默认是UTC时间