在一個應用程式中,我修改了一個外部 json,其中包含另一個應用程式的幾個選項引數。我正在使用 Newtonsoft 的反序列化來修改不同的行。一方面,我在 .xaml 中使用 <TextBox> ,其中輸入了一個數值。旁邊的按鈕允許您驗證號碼。
我在應用程式啟動時檢索 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",
而且我真的不知道如何阻止它放置那些雙引號。
首先感謝您花時間閱讀我的問題。
并提前感謝任何可以幫助我的人。
uj5u.com熱心網友回復:
重新撰寫代碼以掛在已決議的 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();
}
usingjToken.Replace(intValue)將寫入不帶引號的值,因為它是整數型別。注意 - int.Parse 沒有驗證檢查。加點就好了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/448331.html
