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

Unity3D解析含重复字段嵌套JSON及去除转义符的方法

一、解析包含重复字段的嵌套JSON

首先得先修正你现有代码里的一个明显问题:datagame类里重复定义了num_id字段,这在C#里是不允许编译的,直接删掉其中一个就行。

接下来看你提供的JSON结构,它外层包含result、num_id、active,然后嵌套了datagame对象,而且datagame里的data字段其实是字符串形式的JSON数组,不是直接的对象数组,所以不能直接用dataIn[]接收,得先转一步。

咱们先重新定义对应序列化类:

[System.Serializable]
public class GameResponse
{
    // 对应JSON外层的字段
    public string result;
    public string num_id;
    public string active;
    // 嵌套的datagame对象
    public datagame datagame;
}

[System.Serializable]
public class datagame
{
    // 注意原JSON里datagame有个id字段,你之前的类没定义,得加上
    public string id;
    public string delay;
    public string status;
    public string trac;
    public string num_id;
    // 先以字符串接收data,因为原JSON里它是带转义的数组字符串
    public string data;
}

[System.Serializable]
public class dataIn
{
    public string ID;
    public string Sort;
    public string UnitID;
}
二、去除JSON中的\r\n与转义符\

接下来处理datagame.data里的换行符和转义符,咱们写个简单的辅助方法来清理:

private string CleanJsonRawString(string rawJsonStr)
{
    // 先去掉所有\r\n换行符
    string cleaned = rawJsonStr.Replace("\r\n", "");
    // 去掉转义用的\(注意C#里要写两个\\来表示一个\)
    cleaned = cleaned.Replace("\\", "");
    return cleaned;
}
完整解析流程

把两步结合起来,完整的解析代码大概是这样:

// 假设你已经拿到了要解析的JSON字符串,比如叫jsonContent
GameResponse fullResponse = JsonUtility.FromJson<GameResponse>(jsonContent);

// 清理data字段的字符串
string cleanedData = CleanJsonRawString(fullResponse.datagame.data);
// 把清理后的字符串解析成dataIn数组
dataIn[] gameDataArray = JsonUtility.FromJson<dataIn[]>(cleanedData);

// 测试输出看看结果
foreach (var dataItem in gameDataArray)
{
    Debug.Log($"ID: {dataItem.ID}, Sort: {dataItem.Sort}, UnitID: {dataItem.UnitID ?? "未设置"}");
}

几个注意点

  • JsonUtility是大小写敏感的,所以类的字段名必须和JSON里的键完全一致,比如JSON里是ID,你就不能写成id。
  • 如果dataIn里的UnitID是可选字段(有的对象没有),把dataIn改成类而不是struct会更稳妥,struct的字段不能为null,可能导致解析异常。
  • 原JSON外层和datagame里都有num_id,这没问题,因为它们属于不同的类,各自定义就好,之前的问题只是你在同一个类里重复定义了这个字段。

内容的提问来源于stack exchange,提问作者H-ndi Santoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:10