我保存了存盤在本地檔案夾中的 JSON 檔案串列。例如:
艾倫 Lex.json
{
"FirstName": "Allen",
"LastName": "Lex",
"Email": "allen.lex",
"TeamName": "Allen Lex",
"Password": "allen123",
"IsActive": "Yes",
"UserId": 15
}
埃迪查沃.json
{
"FirstName": "Eddie",
"LastName": "Chavo",
"Email": "eddie.chavo",
"TeamName": "Eddie Chavo",
"Password": "eddie123",
"IsActive": "Yes",
"UserId": 120
}
首先,我試圖將所有這些 JSON 檔案查看到串列框。然后,我想將選定的 JSON 檔案填充到每個屬性的一系列文本欄位中。
這是我添加/創建 JSON 檔案并將其保存到檔案夾的代碼:
string isActive = chkIsActive.Checked ? "Yes" : "No";
var account = new UserAccount()
{
FirstName = txtFirstName.Text,
LastName = txtLastName.Text,
Email = txtEmail.Text,
TeamName = txtTeamName.Text,
Password = txtPassword.Text,
IsActive = isActive,
UserId = int.Parse(txtUserId.Text)
};
string jsonFilePath = $@"{Environment.CurrentDirectory}\Output\" txtFirstName.Text " " txtLastName.Text ".json";
JsonMgr.SerializeObj_ToFile<UserAccount>(account, jsonFilePath);
MessageBox.Show("Successfully added new record", "Added user", MessageBoxButtons.OK, MessageBoxIcon.Information);
我被卡住的地方是從磁盤讀取這些 JSON 檔案,以便我可以將它們顯示到 ListBox。然后我想填充文本欄位。有人可以幫我解決我的問題嗎?
謝謝!
uj5u.com熱心網友回復:
您將Json檔案存盤在一個檔案夾中,并且您說您有兩個目標:
- 將所有這些 JSON 檔案查看到串列框
- 為每個屬性填充所選 [to] 文本欄位的 JSON 檔案。
我看到您已經從磁盤上的檔案中對class屬性進行建模。Json您正在采取一種使兩種結果都更容易的好方法。您可以采取額外的步驟來覆寫該ToString方法來描述它應該如何在ListBox.
class UserAccount
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string TeamName { get; set; }
public string Password { get; set; }
public string IsActive { get; set; }
public string UserId { get; set; }
// Format how this record should display in the ListBox
public override string ToString() => $"User: {FirstName} {LastName}";
}
以下代碼使用:(using Newtonsoft.Json要安裝的 NuGet 包)。我看你已經熟悉Json序列化了;這只是一種方法。使用Json和模型,很容易創建UserAccount類物件并將它們添加到Items集合中ListBox:
private void btnLoad_Click(object sender, EventArgs e)
{
var dir = Path.Combine(
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
"json");
foreach(var file in Directory.GetFiles(dir, "*.json"))
{
var text = File.ReadAllText(file);
// Having a model makes it easy to convert the Json.
var model = JsonConvert.DeserializeObject<UserAccount>(text);
// Adding the model to the list will use the "ToString" method to display it.
listBoxJsonNames.Items.Add(model);
}
}
您在ToString方法中撰寫的代碼決定了資料的顯示方式:

當在 中選擇一個專案時ListBox,您可以簡單地將SelectedItem轉換為您的模型類并使用它的屬性來填充您的文本框:
private void listBoxJsonNames_SelectedValueChanged(object sender, EventArgs e)
{
var model = (UserAccount)listBoxJsonNames.SelectedItem;
textBoxFirstName.Text = model.FirstName;
textBoxLastName.Text = model.LastName;
textBoxUserId.Text = model.UserId;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489387.html
