C#游戏开发用Newtonsoft JSON反序列化遇解析错误求解决
解决Newtonsoft JSON反序列化错误:"Unexpected character encountered while parsing value: C..."
错误原因很直接:你调用JsonConvert.DeserializeObject<GameInfo>()时传入的是文件路径字符串,而这个方法需要的是JSON格式的内容字符串。路径的第一个字符是磁盘盘符(比如"C"),不符合JSON语法,所以触发了解析错误。
你的JSON数据和GameInfo模型定义都是正确的,只需要修改代码逻辑,先读取文件里的JSON内容,再进行反序列化:
修正后的完整代码
string path = Application.persistentDataPath + "/testtesJSON"; // 1. 先读取文件中的JSON内容 string jsonContent = File.ReadAllText(path); // 2. 反序列化为GameInfo对象 var gameInfo = JsonConvert.DeserializeObject<GameInfo>(jsonContent); // 3. 更新数据(示例:提升下一级关卡) gameInfo.NextLevel += 1; // 4. 将更新后的对象序列化为JSON并保存回文件 string updatedJson = JsonConvert.SerializeObject(gameInfo, Formatting.Indented); File.WriteAllText(path, updatedJson);
额外提示
- 确保目标文件存在且路径正确,若文件可能不存在,可提前判断并初始化默认数据
- 可添加
try-catch块捕获文件读写、JSON解析时的异常,增强代码鲁棒性
内容的提问来源于stack exchange,提问作者Newboy11
相关产品推荐
相关产品推荐

