我们可以做类似的事情吗?
var staffs = {
"Staff":
[
{ "ID" : 1, "Name" : "John" },
{ "ID" : 2, "Name" : "Mark"}
]
};
foreach (var staff in staffs)
{
Console.WriteLine("ID: {0}", staff.ID);
Console.WriteLine("Name: {0}", staff.Name);
}
而不是这个长代码:
public class Test
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
List<Staff> staffs = new List<Staff>()
{
new Staff() {ID = 1, Name = "John"},
new Staff() {ID = 2, Name = "Mark"}
};
foreach (var staff in staffs)
{
Console.WriteLine("ID: {0}", staff.ID);
Console.WriteLine("Name: {0}", staff.Name);
}
}
}
public class Staff
{
public int ID { get; set; }
public string Name { get; set; }
}
我试过,但Visual Studio显示语法错误。
答案 0 :(得分:1)
不。您演示的是集合和对象初始化器的允许语法。
如果您尝试稍微缩短它,可以删除每个初始化程序的尾随()
,例如:
var list = new List<Staff>
{
new Staff {ID = 1, Name = "John"},
new Staff {ID = 2, Name = "Mark"}
}
答案 1 :(得分:1)
你可以缩短它但不完全像JSON。
List<Staff> staffs = new List<Staff>()
{
new Staff() {ID = 1, Name = "John"},
new Staff() {ID = 2, Name = "Mark"}
};
...你可以变成:(这是一个不是List<T>
的数组,但你可以把它包起来)
var staffs = new[]
{
new Staff {ID = 1, Name = "John"},
new Staff {ID = 2, Name = "Mark"}
};
答案 2 :(得分:0)
最接近的是:
var staffs = new List<Staff> {
new Staff{ ID : 1, Name : "John" },
new Staff{ ID : 2, Name : "Mark"}
};
foreach (var staff in staffs)
{
Console.WriteLine("ID: {0}", staff.ID);
Console.WriteLine("Name: {0}", staff.Name);
}
注意:成员名称和值未引用,但是强类型(与json不同)。
您可以使用Json序列化程序将JSON表示直接反序列化到对象图。