WPF/C# Textbox.Text 重写时不要抢引号 json
WPF/C# Textbox.Text Don't grab quotes while rewriting json
在一个应用程序中,我修改了一个外部 json,它包含另一个应用程序的多个选项参数。我正在使用 Newtonsoft 的反序列化来修改不同的行。
一方面,我在 .xaml 中使用了一个 ,其中输入了一个数值。旁边的按钮可让您验证号码。
我在启动应用程序时检索 json 指示填充文本框的内容:
JToken optionnumeric= jObject.SelectToken("option");
TextBox.Text = optionnumeric.ToString();
用户输入适合自己的数值,点击按钮确认。这是按钮代码:
private void SetNumericValue(object sender, RoutedEventArgs e)
{
if (int.Parse(TextBox.Text) > 1000)
{
TextBox.Text = "1000";
}
else if (int.Parse(TextBox.Text) < 1)
{
TextBox.Text = "1";
}
string jsonString = File.ReadAllText("myjson.json");
JObject jObject = JsonConvert.DeserializeObject(jsonString) as JObject;
JToken jToken = jObject.SelectToken("option");
jToken.Replace(TextBox.Text);
string updatedJsonString = jObject.ToString();
File.WriteAllText("myjson.json", updatedJsonString);
}
问题是原来在json里面的选项是这样的:
"option": 500,
用应用程序重写时,会添加引号:
"option": "500",
而且我真的不知道如何阻止它使用那些双引号。
首先感谢您花时间阅读我的问题。
提前感谢任何可以帮助我的人。
重写你的代码以挂在你解析的 int 上:
private void SetNumericValue(object sender, RoutedEventArgs e)
{
var intValue = int.Parse(TextBox.Text);
if (intValue > 1000)
{
intValue = 1000;
}
else if (intValue < 1)
{
intValue = 1;
}
string jsonString = File.ReadAllText("myjson.json");
JObject jObject = JsonConvert.DeserializeObject(jsonString) as JObject;
JToken jToken = jObject.SelectToken("option");
jToken.Replace(intValue);
string updatedJsonString = jObject.ToString();
File.WriteAllText("myjson.json", updatedJsonString);
TextBox.Text = intValue.ToString();
}
使用 jToken.Replace(intValue)
将写入不带引号的值,因为它是整数类型。注意 - int.Parse 没有验证检查。补充一下就好了。
在一个应用程序中,我修改了一个外部 json,它包含另一个应用程序的多个选项参数。我正在使用 Newtonsoft 的反序列化来修改不同的行。
一方面,我在 .xaml 中使用了一个
我在启动应用程序时检索 json 指示填充文本框的内容:
JToken optionnumeric= jObject.SelectToken("option");
TextBox.Text = optionnumeric.ToString();
用户输入适合自己的数值,点击按钮确认。这是按钮代码:
private void SetNumericValue(object sender, RoutedEventArgs e)
{
if (int.Parse(TextBox.Text) > 1000)
{
TextBox.Text = "1000";
}
else if (int.Parse(TextBox.Text) < 1)
{
TextBox.Text = "1";
}
string jsonString = File.ReadAllText("myjson.json");
JObject jObject = JsonConvert.DeserializeObject(jsonString) as JObject;
JToken jToken = jObject.SelectToken("option");
jToken.Replace(TextBox.Text);
string updatedJsonString = jObject.ToString();
File.WriteAllText("myjson.json", updatedJsonString);
}
问题是原来在json里面的选项是这样的:
"option": 500,
用应用程序重写时,会添加引号:
"option": "500",
而且我真的不知道如何阻止它使用那些双引号。
首先感谢您花时间阅读我的问题。
提前感谢任何可以帮助我的人。
重写你的代码以挂在你解析的 int 上:
private void SetNumericValue(object sender, RoutedEventArgs e)
{
var intValue = int.Parse(TextBox.Text);
if (intValue > 1000)
{
intValue = 1000;
}
else if (intValue < 1)
{
intValue = 1;
}
string jsonString = File.ReadAllText("myjson.json");
JObject jObject = JsonConvert.DeserializeObject(jsonString) as JObject;
JToken jToken = jObject.SelectToken("option");
jToken.Replace(intValue);
string updatedJsonString = jObject.ToString();
File.WriteAllText("myjson.json", updatedJsonString);
TextBox.Text = intValue.ToString();
}
使用 jToken.Replace(intValue)
将写入不带引号的值,因为它是整数类型。注意 - int.Parse 没有验证检查。补充一下就好了。