weixin_45522972 2024-09-15 22:43 采纳率: 0%
浏览 2

关于#json#的问题:正常用这个代码控制上面文件第一层的都没什么问题 现在我想控制 "CustomGameModeSettings": {

这是被控的文件内容↓
{
    "ActiveTargetFramerate": 60,
    "BlobSyncPort": 9700,
    "CustomGameModeSettings": {
        "GameSetting.Environment.DayLength": "Default",
        "GameSetting.Environment.PrecipitationFrequency": "Default",
        "GameSetting.Environment.SeasonLength": "Default",
        "GameSetting.Environment.StartingSeason": "Summer",
        "GameSetting.Survival.ColdPenalties": "Off",
        "GameSetting.Survival.ConsumableEffects": "Normal",
        "GameSetting.Survival.PlayerStatsDamage": "Off",
        "GameSetting.Survival.ReducedFoodInContainers": false,
        "GameSetting.Survival.SingleUseContainers": false,
        "GameSetting.Vail.AnimalSpawnRate": "Normal",
        "GameSetting.Vail.EnemyAggression": "Normal",
        "GameSetting.Vail.EnemyArmour": "Normal",
        "GameSetting.Vail.EnemyDamage": "Normal",
        "GameSetting.Vail.EnemyHealth": "Normal",
        "GameSetting.Vail.EnemySpawn": true
    },
    "GameMode": "Normal",
    "GamePort": 8766,
    "GameSetting": {
        "Environment": {
            "DayLength": "long"
        }
    },
    "GameSettings": {
        "Gameplay.TreeRegrowth": true,
        "Structure.Damage": true
    },
    "IdleDayCycleSpeed": 0,
    "IdleTargetFramerate": 5,
    "IpAddress": "0.0.0.0",
    "LanOnly": false,
    "LogFilesEnabled": false,
    "MaxPlayers": 8,
    "Password": "",
    "QueryPort": 27016,
    "SaveInterval": 600,
    "SaveMode": "Continue",
    "SaveSlot": 1,
    "ServerName": "五朵金花",
    "TimestampLogEntries": true,
    "TimestampLogFilenames": true
}
这是控制文件的代码↓
{
    "serverconfig/dedicatedserver.cfg": {
        "parser": "json",
        "find": {
            "ServerName": "{{server.build.env.SRV_NAME}}",
            "SaveSlot": "{{server.build.env.SAVE_SLOT}}"
        }
    }
}

正常用这个代码控制上面文件第一层的都没什么问题 现在我想控制 "CustomGameModeSettings": {
        "GameSetting.Environment.DayLength": "Default",就涉及第二层了

按正常逻辑控制第二层 应该这么写 {
    "serverconfig/dedicatedserver.cfg": {
        "parser": "json",
        "find": {
            "CustomGameModeSettings.GameSetting.Environment.DayLength": "{{server.build.env.SRV_NAME}}",
            "ServerName": "{{server.build.env.SRV_NAME}}",
            "SaveSlot": "{{server.build.env.SAVE_SLOT}}"
        }
    }
}  
用点去让他找下一层,但是他这个参数本身就是带点的  这就让系统误会一直向下找

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-15 22:44
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的问题是在处理 JSON 文件时,如何准确地定位到第二层或更深层的键值对,并在其中插入或修改数据。在你提供的例子中,你想要修改 "CustomGameModeSettings" 下的 "GameSetting.Environment.DayLength" 的值。这个问题可以通过修改你的控制文件的代码来解决。在 JSONPath 中,你可以使用 /. 来表示父子键值对关系。因此你需要更详细地指定你想要控制的路径。以下是修改后的代码:

    {
        "serverconfig/dedicatedserver.cfg": {
            "parser": "json",
            "find": {
                "CustomGameModeSettings": {
                    "GameSetting": {
                        "Environment": {
                            "DayLength": "{{server.build.env.DAY_LENGTH}}"  # 这里使用你的变量替换 "Default"
                        }
                    }
                },
                "ServerName": "{{server.build.env.SRV_NAME}}",
                "SaveSlot": "{{server.build.env.SAVE_SLOT}}"
            }
        }
    }
    

    在这个修改后的代码中,我们明确地指定了 "CustomGameModeSettings" 下的 "GameSetting",然后是 "Environment",最后是 "DayLength"。这样就不会出现误解为继续向下查找的情况。你需要确保替换 "{{server.build.env.DAY_LENGTH}}" 为你实际想要设置的变量值。这个变量值应该和你的目标 JSON 文件中的 "Default" 值相对应。同样的逻辑可以应用到其他你想要控制的键值对上。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月15日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?