JSON 序列化和反序列化是复制层次结构的合适方法吗?
Is JSON serialization and deserialization a suitable way to duplicate a hierarchy?
我有一个节点层次结构,其中节点的相关部分 class 如下所示:
public class Node
{
protected Node parent;
protected List<Node> children;
public Node Duplicate()
{
string json = JsonUtility.ToJson(this);
Node duplicate = (Node)JsonUtility.FromJson(json, GetType());
return duplicate;
}
}
(我用Unity的JsonUtility序列化成JSON然后反序列化,应该和System.Text.Json一样)
现在我想创建一个节点及其所有子节点的副本,所以我这样做:
Node duplicate = someNode.Duplicate();
我只是创建了层次结构的深拷贝,还是只是制作浅拷贝的另一种方式?
JSON 序列化和反序列化是否适合复制我希望所有数据都完好无损的层次结构?
您肯定创建了深拷贝。这种方法有一个好处:它工作正常。它有一个缺点:糟糕的性能。如果这不是问题,那么它的简单性很诱人。
而且性能可能不是问题!这取决于你的场景。
我有一个节点层次结构,其中节点的相关部分 class 如下所示:
public class Node
{
protected Node parent;
protected List<Node> children;
public Node Duplicate()
{
string json = JsonUtility.ToJson(this);
Node duplicate = (Node)JsonUtility.FromJson(json, GetType());
return duplicate;
}
}
(我用Unity的JsonUtility序列化成JSON然后反序列化,应该和System.Text.Json一样)
现在我想创建一个节点及其所有子节点的副本,所以我这样做:
Node duplicate = someNode.Duplicate();
我只是创建了层次结构的深拷贝,还是只是制作浅拷贝的另一种方式?
JSON 序列化和反序列化是否适合复制我希望所有数据都完好无损的层次结构?
您肯定创建了深拷贝。这种方法有一个好处:它工作正常。它有一个缺点:糟糕的性能。如果这不是问题,那么它的简单性很诱人。
而且性能可能不是问题!这取决于你的场景。