我只是想在json文件中保存一个数组,但我不知道怎么回事,在dataUser.json中只有“{}”
//test.cs
void Start() { Test(); }
void Test()
{
string[,] dataUser = new string[,]
{
{"NgocPhat", "03"},
{"PhatNgoc", "02"}
};
string json = JsonUtility.ToJson(dataUser, true);
File.WriteAllText(Application.dataPath + "/dataUser.json", json);
}
输出量
//dataJson.json
{}
//https://i.stack.imgur.com/SRDHJ.png
3条答案
按热度按时间piok6c0g1#
根据Unity文档here,以下摘录描述了您的问题:
在内部,此方法使用Unity序列化程序;因此序列化程序必须支持传入的对象:它必须是应用了Serializable属性的MonoBehaviour、ScriptableObject或普通类/结构。
这以一种微妙的方式告诉我们,某些.Net可识别的对象不能被Unity序列化程序识别。这可以在Unity检查器中看到,例如,如果你试图向MonoBehaviour添加一个
string[,]
字段,你在检查器中看不到它。请注意,无论您如何装饰
string[,]
或Dictionary<Tk, Tv>
,您都无法对其进行序列化。根据经验,如果您在检查器中看不到它,则无法对其进行序列化。UnityJsonUtility序列化器的限制性也更强一些。你不能序列化(反序列化)单个对象。它只能序列化(反序列化)一个类或结构。
这样看来,您似乎是JSON格式的负责人,因此考虑到这一点,您可能需要执行以下操作:
第一个
结果应如下所示:
cetgtptt2#
从某人的评论中链接的文档可能指出了这个问题:
“在内部,此方法使用Unity序列化程序;因此序列化程序必须支持传入的对象:它必须是应用了Serializable属性的MonoBehaviour、ScriptableObject或普通类/结构。”
我的猜测是数组基类没有这个属性?我认为数组类型的属性可以被序列化,但可能不是你现在这样做的。
我猜解决方案是创建一个伪类来进行序列化,如下所示:
仅供参考,它将数组嵌套在JSON的Data属性中。
您也可以尝试使用Newtonsoft.JSON之类的代码,它可能会对您的原始代码更宽容一些。
nqwrtyyt3#
不确定这是否准确回答了你的问题。但是我已经使用json de & / serializing有一段时间了,它用这个方法工作得很好!
因此,首先您需要将内容保存/写入json文件(本例中为列表)。
把它放在函数保存()中,然后调用它或任何你想用的方法。
然后如果你想读取json文件中的信息,//加载数据。
免责声明:我不是一个Maven,我相信有更多的效果方法,但这一个工程刚刚好!