[
{"id": 1, "name": "danny_devito", "img": "/images/1"},
{"id": 2, "name": "jim_carey", "img": "/images/2"},
{"id": 3, "name": "tyler_1", "img": "/images/3"}
]
[System.Serializable]
public class Players {
public int id;
public string name;
public string img;
}
[System.Serializable]
public class PlayersArray {
public Players[] playersData;
}
string playersJson = File.ReadAllText(Application.dataPath + "/playersFile.json");
PlayersArray loadedPlayerData = (PlayersArray)JsonUtility.FromJson<PlayersArray>(playersJson);
Debug.Log("Danny Boy: " + loadedPlayerData.playersData[0].name);
跟随了大量的教程,但没有一个有效!请帮助
it gives me this error
我试了很多方法,都没用
1条答案
按热度按时间w1e3prcc1#
你试图反序列化一个对象,但是你显示的JSON不是一个对象,而是一个数组,把它反序列化成一个集合:
或者甚至只是一个数组:
顺便说一句...名字很重要。
Players
是一个误导 a player 的名字。这个类应该被称为Player
。此外,这个类 * 可能 * 根本不反序列化,这取决于JSON序列化器的工作方式。它们倾向于使用 properties,而不是 fields。无论如何,你可能都想使用属性:
为了进一步的改进,你可能还想大写属性名称。JSON序列化器 * 可能 * 是区分大小写的(我不认为默认情况下它们是区分大小写的,但值得测试),你可能需要向属性添加属性来指定它们在JSON中的名称。但仅仅为了让代码 * 工作 *,至少你最有可能需要属性而不是字段。