[英]Saving json array to c# class object
我必须将 json 字符串数组分配给 ac# 类。 我做了如下。 但我有一个例外
无法将当前 JSON 数组(例如 [1,2,3])反序列化为“LoggedInUserDetails”类型,因为该类型需要 JSON 对象(例如 {\\"name\\":\\"value\\"})才能正确反序列化。\\r \\n要修复此错误,请将 JSON 更改为 JSON 对象(例如 {\\"name\\":\\"value\\"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList ) 像可以从 JSON 数组反序列化的 List。 还可以将 JsonArrayAttribute 添加到类型以强制它从 JSON 数组反序列化。\\r\\n路径 '',第 1 行,位置 1。"}
public class LoggedInUserDetails
{
public string login_user_name
{
get; set;
}
public string login_user_id
{
get; set;
}
}
var GetResponse = await response2.Content.ReadAsStringAsync();
//"[{\"login_user_name\":\"Rahul\",\"login_user_id\":\"43\"}]"
LoggedInUserDetails obj = JsonConvert.DeserializeObject<LoggedInUserDetails>(GetResponse);
Variables.login_user_name = obj.login_user_name;
Variables.login_user_id= obj.login_user_id;
您应该deserialize
json字符串deserialize
IEnumerable集合或Array
。
var content = await response2.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<List<LoggedInUserDetails>>(content);
这是因为 '[]' 将其存储为结果数组。 您应该能够执行以下操作:
LoggedInUserDetails obj = JsonConvert.DeserializeObject<List<LoggedInUserDetails>>(GetResponse);
您尝试将对象反序列化为列表的地方。 该列表将仅包含 1 个对象。
完整示例:
public class LoggedInUserDetails
{
public string login_user_name
{
get; set;
}
public string login_user_id
{
get; set;
}
}
var GetResponse = await response2.Content.ReadAsStringAsync();
//"[{\"login_user_name\":\"Rahul\",\"login_user_id\":\"43\"}]"
List<LoggedInUserDetails> obj = JsonConvert.DeserializeObject<List<LoggedInUserDetails>>(GetResponse);
Variables.login_user_name = obj[0].login_user_name;
Variables.login_user_id= obj[0].login_user_id;
这边走:
LoggedInUserDetails obj = JsonConvert.DeserializeObject<LoggedInUserDetails[]>(GetResponse).FirstOrDefault() ?? throw new Exception("User not found.");
Variables.login_user_name = obj.login_user_name;
Variables.login_user_id = obj.login_user_id;
您的结果是一个包含 1 个对象的数组,因此您只需将其转换为所需对象的数组并取第一个。
由于您使用的是数组,那么它应该反序列化数组以列出 public class Test { public string login_user_name {get; 设置;} 公共字符串 login_user_id { 获取; 放;} }
string js = "[{\"login_user_name\":\"Rahul\",\"login_user_id\":\"43\"}]";
var result = JsonConvert.DeserializeObject<List<Test>>(js);
foreach(var ob in result)
{
Console.WriteLine(ob.login_user_name);
Console.WriteLine(ob.login_user_id);
}
输出
Rahul
43
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.