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

Unity C#读取JSON文件对象字符串返回空值问题求助

解决Unity中JsonUtility读取自定义类返回空字符串的问题

核心原因是Unity内置的JsonUtility不支持序列化自动属性(带{get; set;}的属性),它只能序列化公共字段,或者标记了[SerializeField]的私有字段。你的DialogueContent类使用了自动属性,导致JsonUtility无法正确解析JSON数据并赋值,最终返回空字符串。

修改方案

将DialogueContent类的自动属性改为公共字段即可:

[System.Serializable]
public class DialogueContent
{
    public string content;
    public string letterDelay;
    public string fontColour;
}

进阶封装(可选)

如果需要保留属性的封装逻辑,也可以用私有字段+属性的方式,给字段标记[SerializeField]让JsonUtility能识别:

[System.Serializable]
public class DialogueContent
{
    [SerializeField] private string _content;
    [SerializeField] private string _letterDelay;
    [SerializeField] private string _fontColour;

    // 只读属性,外部只能访问不能修改
    public string content => _content;
    public string letterDelay => _letterDelay;
    public string fontColour => _fontColour;
}

验证步骤

  1. 替换原DialogueContent类代码
  2. 重新运行Unity场景,Debug.Log(dialogueData.dialogue.fireDialogue[0].content)会正确输出Hello there

额外注意

  • 确保JSON中的键名和类的字段名完全大小写一致,你的JSON结构和字段名匹配,无需调整
  • 所有参与序列化的类必须标记[System.Serializable],你的代码已经满足这一点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:32:16