C# 如何填充UserL列表?
我希望填充C# 如何填充UserL列表?,c#,json,json.net,C#,Json,Json.net,我希望填充UserL列表,但到目前为止我遇到了一些主要问题。我的小脑袋在谷歌上找不到任何解决方案 public partial class RootObject { public List<User> UserL = new List<User>(); } public partial class User { public string Username { get; set; } public double UserID { get; set
UserL
列表,但到目前为止我遇到了一些主要问题。我的小脑袋在谷歌上找不到任何解决方案
public partial class RootObject
{
public List<User> UserL = new List<User>();
}
public partial class User
{
public string Username { get; set; }
public double UserID { get; set; }
public long WarnCount { get; set; }
public long Level { get; set; }
public long XP { get; set; }
}
public partial class RootObject
{
public static List<User> FromJson(string json) => JsonConvert.DeserializeObject<List<User>>(File.ReadAllText(json), Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this RootObject self) => JsonConvert.SerializeObject(self, Converter.Settings);
}
你现在安排事情的方式是。。您需要创建
RootObject
的实例,然后使用FromJson
方法来设置值。这需要在初始化之后进行,或者在RootObject
的构造函数中进行
RootObject root = new RootObject
{
UserL = RootObject.FromJson("json1.json")
};
您得到的错误是由于您试图反序列化的json格式造成的。因为您要直接反序列化到列表中,而不是包含列表的类中,所以最外面的部分需要是[]
数组
以您发布的json为例,您需要删除UserArr部分并进行更改
{
"UserArr":[
{
"Username":"User2",
"UserID":307618173073489920,
"WarnCount":0,
"Level":0,
"XP":0
},
{
"UserName":"User1",
"UserID":385453321999089664,
"WarnCount":0,
"Level":0,
"XP":0
}
]
}
进入
如果json不可修改,那么可以更改反序列化的方式。与其直接反序列化到列表,不如反序列化到RootObject
类。这将要求您将属性UserL
重命名为UserArr
,以匹配json,例如
public class RootObject
{
public List<User> UserArr = new List<User>();
}
RootObject root = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText("json.json"));
你面临什么问题?有错误吗?我首先看到的是1。为什么要传递
json
,然后试图打开一个文件,然后从json反序列化?2.除了初始化列表之外,您实际上没有在代码中的任何地方设置UserL=
,是否还有遗漏的代码?1。我不知道该怎么回答。到目前为止,我主要是这样进行反序列化的。我还有别的事要做吗?2.这就是问题所在。我想填充这个UserL,但我不确定如何填充。我需要填充用户列表,以便能够在需要时调用其成员。不,这是运行它所需的唯一代码,另一个是我试图以不成功的方式填充列表。到目前为止,控制台输出的唯一错误是:Exception:Newtonsoft.Json.JsonSerializationException:无法将当前Json对象(例如{“name”:“value”})反序列化为“System.Collections.Generic.List1”类型[Cuvue.jsonmanagement.User]”,因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。路径“UserArr”,第2行,位置11。
1.我的错,参数名为“JSON”听起来像是在向方法传递一个json字符串,而不是传递一个json文件名..现在有意义了。2.这是您使用的json的一个问题-可以发布吗?可读性更强一点。
[
{
"Username":"User2",
"UserID":307618173073489920,
"WarnCount":0,
"Level":0,
"XP":0
},
{
"UserName":"User1",
"UserID":385453321999089664,
"WarnCount":0,
"Level":0,
"XP":0
}
]
public class RootObject
{
public List<User> UserArr = new List<User>();
}
RootObject root = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText("json.json"));
public class RootObject
{
public List<User> UserArr = new List<User>();
public static RootObject FromJson(string json) => JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(json));
}
RootObject root = RootObject.FromJson("json.json");