Unity中JSON解析报错求助:成员名缺失及根节点值错误
解决Unity中JSON解析的两个常见错误
先来说你遇到的第二个错误 "the document root must not follow by other values" —— 这个错误的意思是你的JSON文档在根对象(或根数组)后面还存在多余的内容,比如额外的字符、重复的对象,或者格式错误导致解析器认为根节点结束后还有其他值要解析。
为什么会出现这个问题?
你把原本的JSON {"layout":"xxxxxx"} 改成 {""layout"":""xxxxxx""}" 是错误的操作:
- 在纯TXT文件里的JSON,键和值的双引号只需要用单个
"即可,不需要写成两个""。""这种写法是在C#字符串字面量中表示单个双引号的转义方式,但直接写在TXT的JSON里会被解析器当成两个独立的引号,导致JSON结构完全混乱,进而出现根节点后有多余内容的错误。
正确的JSON格式
你的TXT文件里应该保留最原始的正确JSON:
{"layout":"xxxxxx"}
另外,你的C#代码还有一个潜在问题
看你的ConfigData类:
[Serializable] public class ConfigData { string layout; }
Unity的JsonUtility只能序列化/反序列化public字段,或者带有[SerializeField]标记的私有字段。所以你需要把layout改成public,或者加上序列化标记:
[Serializable] public class ConfigData { public string layout; // 改成public // 或者:[SerializeField] private string layout; }
总结解决步骤
- 把TXT文件里的JSON改回标准格式:
{"layout":"xxxxxx"},不要用双引号重复的写法 - 确保
ConfigData类中的layout字段是public,或者带有[SerializeField]属性 - 重新读取TXT文件进行JSON解析,应该就能正常工作了
内容的提问来源于stack exchange,提问作者Dominic Zenon
相关产品推荐
相关产品推荐

