Unity开发库存系统时遇KeyNotFoundException及Json解析错误求助
解决Unity库存系统的KeyNotFoundException与JsonException问题
嘿,看了你的代码和错误信息,问题根源很明确——你的Items.json文件存在语法错误,导致LitJson无法正确解析JSON结构,进而抛出了那些异常。
具体错误点
在你的JSON里,每个stats字段后面都缺少了冒号:,这是JSON键值对必须的分隔符。比如原JSON里的:
"stats" { "power": 1, "defence": 0, "vitality": 0 }
这不符合JSON语法规范,正确的写法应该是"stats": { ... }。
修正后的Items.json代码
把两个条目里的stats部分都加上冒号,修正后的完整JSON如下:
[ { "id": 0, "title": "Wood Pickaxe", "value": 6, "stats": { "power": 1, "defence": 0, "vitality": 0 }, "description": "A basic wood pickaxe.", "stackable": false, "rarity": 1, "slug": "wood_pickaxe" }, { "id": 1, "title": "Wood Pickaxe Head", "value": 543, "stats": { "power": 1, "defence": 0, "vitality": 0 }, "description": "A piece of a broken wood pickaxe.", "stackable": false, "rarity": 1, "slug": "wood_pickaxe_head" } ]
为什么这个错误会引发那些异常?
当LitJson尝试解析错误的JSON时,它无法识别stats后面的{是合法的结构开始,解析流程被打断,进而导致后续读取itemData[i]["stats"]["power"]这类字段时,找不到对应的键(因为解析出来的结构根本不是预期的嵌套字典),所以抛出了KeyNotFoundException。而错误信息里的JsonException: Invalid token '123' in input string也是因为JSON语法错误,解析器无法正确处理后续的内容。
额外小建议
以后遇到JSON解析相关的错误,第一步可以先检查JSON格式是否合法——你可以用一些在线JSON校验工具来快速定位语法问题,这比盯着代码找要高效得多。
内容的提问来源于stack exchange,提问作者Godfilms
相关产品推荐
相关产品推荐

