将整数设置为某些内容,但它不会更改。为什么?

  • 本文关键字:设置 整数 c# json.net
  • 更新时间 :
  • 英文 :


目前我有一个函数,它从JSON文件加载一个整数,然后将ExeBalance设置为它在JSON文件中找到的整数。然而,当检查断点时,我发现JSONJBalance得到了正确的检索,但它不会更改ExeBalace整数。

它将其设置为JSON对象,但不会更改ExeBalance值:

ExeBalance = saveDataJson.JBalance;

这是我的代码:

namespace Money_Simulator
{
public class DataObject
{
public int JBalance { get; set; }
}

internal class DataHandler
{
public int ExeBalance = 0;

public void AddBalance(int amt)
{
ExeBalance = ExeBalance + 1;
Console.WriteLine(ExeBalance);
}

public void LoadSave()
{
string filePath = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"savedata.json"
);
StreamReader sr = new StreamReader(filePath);
string saveDataContent = sr.ReadToEnd();
var saveDataJson = JsonConvert.DeserializeObject<DataObject>(
saveDataContent
);
ExeBalance = saveDataJson.JBalance;
Console.WriteLine("ExeBalance was set to this value from reading savedata.json:");
Console.WriteLine(ExeBalance);
}
}
}

savedata.json的内容是{"JBalance": 5}

您的代码的问题是您不了解它应该如何工作。我的猜测是,您希望在JSON中存储的余额中添加一个金额。我已经修改了你的代码来做到这一点。Load((返回反序列化的JSON对象。AddBalance然后添加金额(amt(,Save然后将其保存到JSON文件中。这是修改后的代码:

using Newtonsoft.Json;
namespace Money_Simulator
{
public class DataObject
{
public int JBalance { get; set; }
}
internal class DataHandler
{
private const string FileName = @"......savedata.json";
public void AddBalance(int amt)
{
var data = Load();
data.JBalance = data.JBalance + amt;
Save(data);
}
private DataObject Load()
{
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FileName);
string saveDataContent = File.ReadAllText(filePath);
var saveDataJson = JsonConvert.DeserializeObject<DataObject>(saveDataContent);
Console.WriteLine($"ExeBalance was set to this value from reading savedata.json: {saveDataJson.JBalance}");
return saveDataJson;
}
private void Save(DataObject data)
{
var output = JsonConvert.SerializeObject(data);
File.WriteAllText(FileName, output);
}
}
}

在您的主要应用程序中执行以下操作:

using Money_Simulator;
var handler = new DataHandler();
handler.AddBalance(1);
handler.AddBalance(1);
handler.AddBalance(1);
handler.AddBalance(1);
handler.AddBalance(1);
handler.AddBalance(1);
handler.AddBalance(1);

结果是:

ExeBalance was set to this value from reading savedata.json: 10
ExeBalance was set to this value from reading savedata.json: 11
ExeBalance was set to this value from reading savedata.json: 12
ExeBalance was set to this value from reading savedata.json: 13
ExeBalance was set to this value from reading savedata.json: 14
ExeBalance was set to this value from reading savedata.json: 15
ExeBalance was set to this value from reading savedata.json: 16

最新更新