You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中JsonUtility将List转为JSON返回空对象{}的问题

解决Unity中JsonUtility序列化List返回空JSON的问题

问题原因

Unity内置的JsonUtility.ToJson不支持直接序列化List<T>或数组,必须将集合类型包裹在一个带有[System.Serializable]标记的类/结构体中才能正确序列化。你直接传入List<QuizList>,所以返回空对象{}。

解决方案

步骤1:添加列表包装类

创建一个可序列化的类,用来包裹你的QuizList列表:

[System.Serializable]
public class QuizListWrapper
{
    public List<QuizList> quizList;
}

步骤2:修改序列化代码

在datatest.cs中,用这个包装类封装quiz_list后再序列化:

void Awake()
{
    choices.Add("Aaa");
    choices.Add("Bbb");
    choices.Add("Ccc");

    question_list.Add(new QuestionList(
        "I'm Gonna Be (500 Miles)",
        choices,
        1
    ));

    quiz_list.Add(new QuizList(
        "sadasdasd",
        question_list
    ));

    // 用包装类包裹列表后序列化
    var wrapper = new QuizListWrapper();
    wrapper.quizList = quiz_list;
    var json = JsonUtility.ToJson(wrapper);
    Debug.Log(json); // 现在会输出正确的JSON内容
}

额外注意事项

  • 确保所有需要序列化的类都带有[System.Serializable]标记(你的代码已满足)
  • 若需要更灵活的序列化支持(比如直接处理List、字典),可在Package Manager中导入Unity官方的Newtonsoft Json包,但上述方案是内置工具的标准解决方式。

验证结果

修改后,Debug.Log会输出包含完整数据的JSON,示例如下:

{"quizList":[{"quizName":"sadasdasd","questionList":[{"question":"I'm Gonna Be (500 Miles)","choice":["Aaa","Bbb","Ccc"],"option":1}]}]}

内容的提问来源于stack exchange,提问作者LearnProgramming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:06:13