gpt4 book ai didi

c# - 使用 JSON 时类中数组的问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:50 24 4
gpt4 key购买 nike

我有一个序列化问题。我希望保存和加载一 block 简单的 3d 数据。我有一个包含尺寸(宽度、高度和长度)以及 3D 整数数组的类。 JSON 很乐意将类转换为字符串供我保存,但再次转换回来时效果不佳。

数据类:

Public class cClusterData {
public int mWidth;
public int mHeight;
public int mLength;
public int[,,] mCellType;

public cClusterData()
{
mCellType = new int[32,32,32];
}
}

保存它的例程:

    public void SaveCluster()
{
cClusterData lData = new cClusterData();
lData.mWidth = mWidth;
lData.mHeight = mHeight;
lData.mLength = mLength;
for (int lX = 0; lX < mWidth; lX++)
{
for (int lY = 0; lY < mHeight; lY++)
{
for (int lZ = 0; lZ < mLength; lZ++)
{
lData.mCellType[lX,lY,lZ] = (int)mCell[lX,lY,lZ].mType;
}
}
}

string lDataString = LitJson.JsonMapper.ToJson(lData);
cFileUtils.WriteStringToFile("TestCluster", lDataString);
Debug.Log("Done saving");
}

以及再次加载它的函数:

    public void LoadCluster()
{
string lDataString = cFileUtils.LoadStringFromFile("TestCluster");
cClusterData lData = new cClusterData();
lData = LitJson.JsonMapper.ToObject<cClusterData>(lDataString);
Debug.Log("Loaded header " + lDataString);
// convert cluster data to actual cluster
mWidth = lData.mWidth;
mHeight = lData.mHeight;
mLength = lData.mLength;

CreateBlankCluster();
for (int lX = 0; lX < mWidth; lX++)
{
for (int lY = 0; lY < mHeight; lY++)
{
for (int lZ = 0; lZ < mLength; lZ++)
{
mCell[lX,lY,lZ].SetType((cCell.eCellType)lData.mCellType[lX,lY,lZ]);
}
}
}
}

一切正常,直到它尝试访问 lData.mCellType,此时它抛出 NullReferenceException:

NullReferenceException:对象引用未设置到对象的实例(包装器托管到托管)对象:ElementAddr(对象,int,int,int)

我的猜测会涉及数组在构造函数中的设置方式,而我只是在某处漏掉了一行。但我无法解决。加油吧,互联网!

最佳答案

我在你的代码片段中没有看到,但是你在这个类之前添加了 [System.Serializable] 了吗? Thisthis两者都是从同一个问题开始的,一个自定义类,所有的解决方案似乎都是通过将其添加到类的顶部来找到的。

关于c# - 使用 JSON 时类中数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com