[英]How to retrieve the username from JSON url in C#
我正在尝试创建一个登录,用户只需输入 1 个许可证即可登录,如果该许可证在 json 中,那么他可以 go 进入下一页。
我唯一无法管理的是检查我必须输入许可证的 EntryLicense.text 是否与EntryLicense.text
中的 1 匹配。
这是我的 JSON 文件
{
"userdata": [
{
"Users": [
{
"licenseKey": "abcde"
}
]
}
]
}
这是我的 JSON class
public class UsersItem
{
public string licenseKey { get; set; }
}
public class UserdataItem
{
public List<UsersItem> Users { get; set; }
}
public class Root
{
public List<UserdataItem> userdata { get; set; }
}
到目前为止,这是我的登录代码,我已经设法获得 url 的 json。 我认为出错的地方是 JsonValidation() 方法,如果在这种情况下文本框abcde
来自 json,我尝试让它在主页之后导航
//load the json
private static UserdataItem LoadJson()
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("url");
UserdataItem root = new UserdataItem();
httpWebRequest.Method = WebRequestMethods.Http.Get;
httpWebRequest.Accept = "application/json; charset=utf-8";
string file;
var response = (HttpWebResponse)httpWebRequest.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
using (var sr = new StreamReader(response.GetResponseStream()))
{
file = sr.ReadToEnd();
var allUsers = JsonSerializer.Deserialize<UserdataItem>(file);
}
}
return root;
}
// validate licensekey
private void JsonValidation()
{
try
{
UserdataItem ObjProtocolList = LoadJson();
{
ObjProtocolList.Users.Where(x => x.licenseKey.Equals(EntryLicense.Text));
}
if (EntryLicense.Text.Equals(LoadJson()))
{
Navigation.PushAsync(new MainPage());
}
else
{
DisplayAlert("Alert", "Wrong username", "OK");
}
}
catch (Exception ex)
{
}
}
// The login button
private void btnLogin_Clicked(object sender, EventArgs e)
{
JsonValidation();
}
我如何成功?
try/catch 中的位看起来很奇怪。 它没有使用 LINQ 结果,并且由于某种原因两次加载 JSON。 也许只需从 LINQ 查询(或 null,如果没有匹配项)加载第一个匹配记录,然后检查它是否不是 null?
UserdataItem ObjProtocolList = LoadJson();
var matchingRecord = ObjProtocolList.Users.FirstOrDefault(x => x.licenseKey.Equals(EntryLicense.Text));
if (matchingRecord != null)
{
Navigation.PushAsync(new MainPage());
}
else
{
DisplayAlert("Alert", "Wrong username", "OK");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.