babalae/better-genshin-impact · error · Exception

combat_avatar.json deserialize failed

Error message

combat_avatar.json deserialize failed

What it means

Error "combat_avatar.json deserialize failed" thrown in babalae/better-genshin-impact.

Source

Thrown at BetterGenshinImpact/GameTask/AutoFight/Config/DefaultAutoFightConfig.cs:22

using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Json;

namespace BetterGenshinImpact.GameTask.AutoFight.Config;

public class DefaultAutoFightConfig
{
    //public static List<CombatAvatar> CombatAvatars { get; set; }
    public static List<string> CombatAvatarNames { get; set; }
    public static Dictionary<string, CombatAvatar> CombatAvatarMap { get; set; }
    public static Dictionary<string, CombatAvatar> CombatAvatarNameEnMap { get; set; }
    public static FrozenDictionary<string, string> CombatAvatarAliasToNameMap { get; set; }

    static DefaultAutoFightConfig()
    {
        var json = File.ReadAllText(Global.Absolute(@"GameTask\AutoFight\Assets\combat_avatar.json"));
        var config = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<CombatAvatar>>(json) ?? throw new Exception("combat_avatar.json deserialize failed");
        //CombatAvatars = config;
        CombatAvatarNames = config.Select(x => x.Name).ToList();
        CombatAvatarMap = config.ToDictionary(x => x.Name);
        CombatAvatarNameEnMap = config.ToDictionary(x => x.NameEn);
        CombatAvatarAliasToNameMap = config.SelectMany(c => c.Alias.Select(a => new KeyValuePair<string, string>(a, c.Name))).ToFrozenDictionary();
    }

    public static string AvatarAliasToStandardName(string alias)
    {
        if (CombatAvatarAliasToNameMap.TryGetValue(alias, out string? name) && name != null)
        {
            return name;
        }
        throw new Exception($"角色名称校验失败:{alias}");

        // return CombatAvatars.Find(x => x.Alias.Contains(alias))?.Name ?? throw new Exception($"角色名称校验失败:{alias}");
    }
}

View on GitHub (pinned to a7cb36712d)

Solutions

  1. 重新下载或更新程序,确保 combat_avatar.json 资源文件完整
  2. 检查该文件是否被杀毒软件破坏或拦截
  3. 手动恢复默认配置文件

Example fix

重新安装或完整更新 BetterGI,恢复 Assets 下的 combat_avatar.json;不要手动修改该资源文件。

When it happens

Trigger: DefaultAutoFightConfig 静态构造时读取 GameTask\AutoFight\Assets\combat_avatar.json 并反序列化,结果为 null(文件损坏或内容非法)时抛出。

Common situations: 安装目录中 combat_avatar.json 资源缺失、被杀毒软件破坏或版本更新不完整。


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/69b0b63f426b6c69. Report an issue: GitHub.