WPF/C# Textbox.Text 重写 json 时不要抓住引号



在一个应用程序中,我修改一个外部json,该json包含另一应用程序的几个选项参数。我正在使用Newtonsoft的反序列化来修改不同的行。在一个例子中,我在.xml中使用了<文本框>其中输入数值。它旁边的一个按钮允许您验证数字。

当应用程序启动时,我检索json指示填充TextBox:的内容

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上没有验证检查。这将是一个很好的补充。

相关内容

  • 没有找到相关文章

最新更新