繁体   English   中英

如何从 C# 中的 JSON url 中检索用户名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM