【发布时间】:2021-02-27 05:12:13
【问题描述】:
我已经创建了一个自定义类,我需要将它序列化为一个 json 文件进行保存。 我已经得到它,以便它将写入文件,但除非我将数组标记为公共,否则它不会序列化数据,并且只会保存一个(大部分)空白文件。
using System;
using System.IO;
using UnityEngine;
[Serializable]
public class SettingsData
{
[SerializeField] int[,] schedule = new int[7,24]; //stores the each hour in a 2D array [day,hour]
public void Save()
{
string jsn = JsonUtility.ToJson(this);
string path = Application.persistentDataPath + "/settings.json";
Debug.Log(path);
File.WriteAllText(path, jsn);
}
}
它吐出什么:
{}
我想让它吐出什么:
{"schedule":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]}
我尝试过其他 JSON 序列化程序(neuecc/Utf8Json 和 Newtonsoft.Json),但都不起作用
我尝试将其设为一维数组而不是二维数组,但没有成功。
我什至把这个函数移到了课堂之外,以防是“(this)”把它搞砸了,事实并非如此。
将其公开确实有效,但我希望它是私有的。
如何在不公开的情况下使其序列化?
【问题讨论】:
-
我不习惯统一 json utils,但通常在这种情况下,我会创建一个单独的 json 文件模型类,其中包含用于序列化的公共属性
标签: c# json unity3d serialization private