我想创建一个对象数组,但是我发现这很困难,因为我只是使用C#的初学者。我的对象数组非常复杂,因为我在对象中有一个元素,就像这样,也需要具有对象数组。
array = [
{
"bch": "001",
"branch": "AAA",
"pdaccounts": [
{"Name":"John Doe","Amount":1000.00},...
],
"raccounts": [
{"Name":"John Doess","Amount":1980.56},...
],
"collapse":true
},
...
];
有人可以帮助我吗?
答案 0 :(得分:2)
有很多方法可以初始化列表和嵌套列表。想象这是我的课。我提供了一个用于对象初始值设定项模式的无参数构造函数(尽管它不限于无参数构造函数),带有名称和列表对象的构造函数以及带有名称和{{3}的构造函数}节点数组。
为简单起见,我已经对类进行了引用,但是显然您不需要这样做。
public class Node
{
public Node() // you could pass nothing and set them manually or use the object initializer pattern
{
}
public Node(string name, List<Node> nodes) // you could pass the name and an existing list
{
this.Name = name;
this.Nodes = nodes;
}
public Node(string name, params Node[] nodes) // you could pass the name and a list of items (which can be called like Node("a", node, node, node)
{
this.Name = name;
this.Nodes = nodes.ToList(); // needs using System.Linq; at the top of the file or namespace
}
public string Name { get; set; }
public List<Node> Nodes { get; set; }
}
示例:
// object initializer
var childChildChildChildNode = new Node
{
Name = "ChildChildChildChild"
}
// constructor: string name, params Node[] nodes
var childChildChildNode = new Node("ChildChildChild", childChildChildChildNode);
// constructor: string name, List<Node> nodes
var childChildNode = new Node("ChildChild", new List<Node> { childChildChildNode });
// object initializer
var childNode = new Node
{
Name = "Child",
Nodes = new List<Node>()
};
// add items to the list of the child node
childNode.Nodes.Add(childChildNode);
// object initializer for node and list
var parentNode = new Node
{
Name = "Parent",
Nodes = new List<Node> { childNode }
};
// full object initializer
var otherParentNode = new Node
{
Name = "Parent",
Nodes = new List<Node>
{
new Node {
Name = "Child",
Nodes = new List<Node>
{
new Node
{
Name = "ChildChild1"
},
new Node
{
Name = "ChildChild2"
}
}
}
}
};
请注意,这不是详尽的列表,其中介绍了使用数组和嵌套数组初始化对象的方法,只是一些入门示例。
答案 1 :(得分:1)
考虑将需要在包含此信息的代码中表示的类/对象。您可能已经习惯了POCO类,如下所示:
public class Human
{
public string Name { get; set; }
public int Age { get; set; }
}
类似于上面的Human示例的类可以包含您定义的其他类。请注意下面的CheeseBurger类中的Cheese属性。
public class Cheese
{
public int SmellFactor { get; set; }
}
public class CheeseBurger
{
public Cheese CheeseType { get; set; }
}
这很容易适用于适合您的每个属性“ pdaccounts”和“ raccounts”。