你好,我有以下Json:
{
"login": {
"login1": {
"password": "Password123",
"username": "admin1"
},
"login2": {
"password": "Password123",
"username": "admin2"
}
}
}
我用来反序列化Json的Class1名为LoginData:
public class LoginTypes
{
[JsonProperty("login")]
public Dictionary<string, LoginData> LoginData { get; set; }
}
public class LoginData
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
以及在开关中使用Json的Class 2:
private LoginData loginData = JsonConvert.DeserializeObject<LoginData>(dataJsonMap.loginJsonPath);
public void InformLogin(LoginEnum.Login loginType)
{
switch (loginType)
{
case LoginEnum.Login.login1:
browser.FillIn(userNameFieldId).With(loginData[login1].username);
browser.FillIn(passwordFieldId).With(loginData[login1].password);
break;
}
}
但是我一直收到错误消息。我无法像这样接受字典,在class2中的loginData [login1]上有一个红色下划线,表示我无法将索引应用于LoginData类型的表达式,并且找不到解决方法。我在做什么错了?
答案 0 :(得分:1)
您是否有可能在JSON末尾错过了一个卷曲中断(属于Login
属性)?
{
"login": {
"login1": {
"password": "Password123",
"username": "admin1"
},
"login2": {
"password": "Password123",
"username": "admin2"
}
} //one missing curly break
}
此Json也对LoginTypes
对象无效,对LoginData
对象无效。
答案 1 :(得分:0)
您应该反序列化为“ LoginTypes”,一旦拥有该类的实例,就可以编写一些代码,例如
loginType.LoginData[loginType].Username
您当前正在反序列化到没有任何字典的LoginData。我认为您的示例JSON现在无法成功反序列化。
答案 2 :(得分:0)
对我来说,您要做什么并不十分清楚。您不会在代码中反序列化字典。 也许这种类型的代码可以为您提供帮助(但Json必须有所不同):
class LoginData
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
class OtherClassUsingYourTypes
{
public OtherClassUsingYourTypes(string jsonData)
{
this.loginDictionary = JsonConvert.DeserializeObject<Dictionary<string, LoginData>>(jsonData);
}
private Dictionary<string, LoginData> loginDictionary;
public void FillLogin(string loginKey)
{
LoginData loginValues = loginDictionary[loginKey];
browser.FillIn(userNameFieldId).With(loginValues.Username);
browser.FillIn(passwordFieldId).With(loginValues.Password);
}
}