将JSON文件加载到ListBox和TextBox C#
我正在开发一个Windows窗体应用程序。文本框索引可以保存并显示在列表框中,代码如下:将JSON文件加载到ListBox和TextBox C#,c#,json,listbox,C#,Json,Listbox,我正在开发一个Windows窗体应用程序。文本框索引可以保存并显示在列表框中,代码如下: private List<FunctionData> funcParamList = new List<FunctionData>(); ... private void addFuncButton_Click(object sender, EventArgs e) { FunctionData funcParams = new FunctionData(
private List<FunctionData> funcParamList = new List<FunctionData>();
...
private void addFuncButton_Click(object sender, EventArgs e)
{
FunctionData funcParams = new FunctionData();
funcParams.blabla1name = blabla1.Text;
funcParams.blabla2name = blabla2.Text;
...
if (funcParams.isValid())
{
funcParamList.Add(funcParams);
functionListBox.Items.Add(functionNameBox.Text);
}
并将它们以JSON格式保存到文件中:
private void saveFileButton_Click(object sender, EventArgs e)
{
fileName = fileNameBox.Text;
string jsonFunc = JsonConvert.SerializeObject(funcParamList);
System.IO.File.WriteAllText(@"<blablapath>\" + fileName + ".txt", jsonFunc);
}
我已经通过将“反序列化对象”转换为列表解决了这个问题,并且已经完成了。以下是变化:
...
var loadedFile = JsonConvert.DeserializeObject<List<FunctionData>>(jsonFile);
。。。
var loadedFile=JsonConvert.DeserializeObject(jsonFile);
OpenFileDialog是您选择的对话框。每次更改某些内容时,您都需要重写文件。好的,我会这样做,我已经尝试使用OpenFileDialog来完成此操作,但未能成功。我该怎么做?滚动到底部,有一个例子这个例子没有帮助我获取JSON对象。我已经检查过了。(编辑了我的问题和我是如何尝试的)谢谢你。你应该把你的json写进.json文件,这是通常的做法。恐怕我没有时间好好解释,也许其他人可以。
private void loadFileButton_Click(object sender, EventArgs e)
{
OpenFileDialog loadFileDialog = new OpenFileDialog();
...
if (loadFileDialog.ShowDialog() == DialogResult.OK)
{
string jsonFileName = loadFileDialog.FileName;
string jsonFile = File.ReadAllText(jsonFileName);
dynamic loadedFile = JsonConvert.DeserializeObject(jsonFile);
//if (functionListBox.SelectedItem == null) { return; }
foreach (var obj in loadedFile)
{
if (obj.functionName != null)
{
functionListBox.Items.Add(obj.functionName);
getParams(obj); // I get exception here
funcParamList.Add(loadedFile);
functionListBox.Refresh();
}
}
}
...
var loadedFile = JsonConvert.DeserializeObject<List<FunctionData>>(jsonFile);