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

Unity中JsonUtility解析嵌套JSON无法获取完整Items列表问题

问题根因

你的解析失败、返回结果不符合预期是几个错误叠加导致的:

  • C#代码存在基础语法错误:ItemList定义漏写class关键字,类中字段末尾缺失分号,无法正常编译
  • 未满足Unity JsonUtility的序列化规则:自定义待序列化类必须添加[Serializable]特性,否则工具无法识别类内字段
  • 字段名不匹配:JsonUtility解析时严格区分大小写,你的JSON中嵌套数组字段名是大写开头的Items,类中定义的是小写items,字段无法对应
  • 数据层级映射错误:你的JSON根节点是数组,数组内的对象才包含name、description、Items字段,直接用单层的ItemList去匹配根节点,层级完全错位
  • 列表使用逻辑有误:C#中List<T>[索引]的作用就是获取列表指定位置的单个元素,要获取完整列表直接调用列表对象本身即可,不需要追加[0]索引。
修复步骤

1. 定义正确的可序列化数据模型

类名、字段名严格匹配JSON结构,所有自定义类添加[Serializable]特性:

using System;
using System.Collections.Generic;

// 单条元素数据
[Serializable]
public class Item
{
    public string element;
    public string color;
}

// JSON数组内的分类对象
[Serializable]
public class Category
{
    public string name;
    public string description;
    // 字段名和JSON保持一致,大写开头
    public List<Item> Items;
}

// 根节点包装类,适配JsonUtility不支持直接解析根数组的限制
[Serializable]
public class RootWrapper
{
    public List<Category> data;
}

2. 修正解析逻辑

JsonUtility本身不支持直接解析根节点为数组的JSON,需要先给原始JSON包装一层对象结构再解析:

// 读取到的原始JSON文本
string rawJson = System.IO.File.ReadAllText("你的JSON文件路径");
// 包装一层根字段
string wrappedJson = "{\"data\":" + rawJson + "}";

// 执行解析
RootWrapper root = JsonUtility.FromJson<RootWrapper>(wrappedJson);
// 拿到第一个分类下的完整Item列表,共4条数据
List<Item> allItems = root.data[0].Items;

3. 正确使用解析后的列表

  • 要获取完整的元素列表,直接使用allItems对象即可,不需要加索引
  • 要获取列表中指定位置的单个元素,再通过索引访问,比如第一个元素的element值用allItems[0].element,第二个用allItems[1].element,以此类推
  • 遍历全量元素可以直接用循环:
foreach (Item item in allItems)
{
    UnityEngine.Debug.Log($"元素类型:{item.element},对应颜色:{item.color}");
}

如果不想做JSON包装,可以直接使用Unity已内置的Newtonsoft.Json库解析,它原生支持根为数组的JSON结构,解析代码更简洁:

using Newtonsoft.Json;

// 无需包装,直接解析根数组
List<Category> categories = JsonConvert.DeserializeObject<List<Category>>(rawJson);
List<Item> allItems = categories[0].Items;

注意:先修正你原始JSON的语法错误,你贴的JSON末尾多了一个多余的闭合花括号,会导致所有JSON解析工具报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:54:16