在我的实际项目中,我实际上是用API检索数据,并使用一个原始体,返回结果是JSON格式。我试着给我的代码举一个类似的例子,如下所示...
我想实现的是让用户在下拉列表中进行选择(Xamarin Forms中的Picker),然后显示相应的结果...... 也就是说,下拉列表中会有John和Mark。如果用户选择了John,就会显示密码:1234,角色。管理员...... 我不知道如何实现这个功能,因为JSON结果是一整块的,类似于我的例子中的 var exmp
....
我的代码
var exmp = "User: John, Password: 1234, Role: Admin, User: Mark, Password: 0000, Role: User";
string[] empTxt = exmp.Split(new[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries);
var user = new List<string>();
var userdetails = new List<string>();
for (int i = 0; i < empTxt.Count(); i++)
{
if (empTxt[i].Equals("User"))
{
user.Add(empTxt[i + 1]);
user.Add(empTxt[i + 3]);
user.Add(empTxt[i + 5]);
userdetails.AddRange(user);
}
}
for (int i = 0; i < userdetails.Count(); i++)
{
//labelTxt.Text = userdetails.ToString();
Picker.ItemsSource = userdetails[0]; (can't run code because error)
}
Json正文
{
{
"User": "John",
"Password": "1234",
"Role": "Admin",
},
{
"User": "Mark",
"Password": "0000",
"Role": "Director",
}
}
考虑到你有以下有效的JSON作为你的输入,那么这一切都变得相当琐碎。
[
{
"User":"John","Password":"1234","Role":"Admin"
},
{
"User":"Mark","Password":"0000","Role":"User"
}
]
首先定义一个类,它将捕获你的用户数据。
public class UserRecord
{
public string User;
public string Password;
public string Role;
public override string ToString() => this.User;
}
现在,使用 Newtonsoft.Json
,我可以这样反序列化数据。
UserRecord[] users = JsonConvert.DeserializeObject<UserRecord[]>(json);
最后,绑定是超级简单的。
Picker.ItemsSource = users;
覆盖 ToString()
将决定下拉菜单中显示哪些数据。当用户在下拉菜单中选择一个项目时,您应该能够将所选项目投向 UserRecord
来获取其余的字段。
让我知道,如果工作。