将特定的 JSON 字段反序列化为 Unity 中的对象列表

问题描述

对于个人项目,我试图将一个大的 Json 数组反序列化为一个对象列表,但是在遵循其他指南时我反复遇到问题。我有以下 json 文件

{
  PokemonjsONList : [
    {
      "id": 1,"region": "Kanto","name": "Bulbasaur","typeList": [ "Grass","Poison" ]
    },{
      "id": 2,"name": "Ivysaur",{
      "id": 3,"name": "Venusaur","form": "f2","region": "Kalos","name": "Mega Venusaur","form": "f3","region": "galar","name": "G-Max Venusaur",{
      "id": 4,"name": "Charmander","typeList": [ "Fire" ]
    },...
    {
      "id": 898,"form": "f4","Legend": "true","name": "Shadow Rider Calyrex","typeList": [ "Psychic","Grass" ]
    }
  ]
}

如您所见,某些 json 条目比其他条目具有更多的键值对,因为此 json 文件不仅仅用于此项目。我只需要 Name、Region、Typelist 和 Legend(未显示,因为 json 文件的长度要长得多)字段。我也有这门课:

[System.Serializable]
public class PokemonList : MonoBehavIoUr
{
    public List<PokemonOBJ> PokemonjsONList;
}

意思是接收这个json数据,还有这个类:

[System.Serializable]
public class PokemonOBJ : MonoBehavIoUr
{
    public string Name { get; set; }
    public string Region { get; set; }
    public List<string> TypeList { get; set; }
    public bool Legend { get; set; }
}

成为存储每个条目数据的基础对象。但是,当尝试序列化 json 文件时:

string jsonString = @"Assets/JSON/data.json";
    public PokemonList PokemonDB;
PokemonDB = JsonUtility.FromJson<PokemonList>(jsonString);

导致“无法将 JSON 反序列化为 PokemonList 类型的新实例” 我使用的教程展示了将 PokemonOBJ 用于 FromJson,但这会导致 vs 本身出现错误,我在这里对如何使其正常工作以及我做错了什么感到有些迷茫。

解决方法

来自docs

仅支持普通的类和结构;派生自的类 UnityEngine.Object(例如 MonoBehaviour 或 ScriptableObject)是 不是。