c# - 将对象数组保存在 json 对象中
问题描述
所以我有两个 c# 类(Team 和 Player),我想将一个团队存储到一个 json 文件中。每支球队都有一些球员。我认为它应该是这样的:
{
"name":"Chelsea"
"players": [
{
"name":"Player1"
},
{
"name":"Player2"
},
{
"name":"Player3"
}
]
}
但遗憾的是它对我不起作用。它总是只返回:
{"name":"Chelsea"}
我真的不知道为什么会这样。甚至有可能做到这一点吗?我的代码是:
public class Team
{
public string name = "testTeam";
public Player[] players = new Player[0];
public void AddPlayer(Player player)
{
int i = players.Length;
players = new Player[i+1];
players[i] = player;
}
public void save()
{
File.WriteAllText(Application.dataPath + "/data/teams/" + name + ".json", JsonUtility.ToJson(this));
}
}
public class Player
{
public string name;
}
解决方案
请参阅序列化规则
如何确保自定义类可以序列化
确保:
- 有
[Serializable]
属性- 不抽象
- 不是静态的
- 不是泛型的,尽管它可能继承自泛型类
要确保自定义类或结构的字段被序列化,请参阅上面的如何确保脚本中的字段被序列化。
您应该添加属性[Serializable]
[Serializable]
public class Team
{
...
}
[Serializable]
public class Player
{
...
}
Unity 的内置 JsonUtility 可以很好地提示哪些内容将被正确序列化,因为它使用相同的序列化规则。
只是放在某个地方
public class Example : MonoBehaviour
{
public Team team;
}
您将在 Unity 的 Inspector 中查看它是否正确序列化。
然后还可以查看Jawad对动态存储条目的优化方式的回答;)
推荐阅读
- node.js - 400 错误请求将 /favicon.ico 作为 req.url 在 express 中返回。
- scala - Scala中的“捆绑”函数
- azure - AAD:是否可以将 Microsoft Graph 开放扩展放入 AD 应用程序清单中的 optionalClaims 中?
- favicon - 添加网站图标的问题
- python-3.x - 当我打开终端时,它总是打印这些错误代码
- python - Python3 - 在不创建列表的情况下遍历 Linux 目录
- c - gcc 编译错误:没有输入文件/fork
- sql - 为什么我的带有 OFFSET/FETCH 的 SQL 语句不起作用?
- sql - 为什么 Salary > 0 不会导致表/索引扫描
- android - Coinbase oauth 2.0 重定向 uri android