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

CastleDB(.cdb)解析JSON生成Faction结构及存回问题求助

解决CastleDB派系数据解析与保存问题

我来帮你搞定这个CastleDB数据解析和回写的问题!结合你给出的JSON结构和需求,分两步来实现:

一、从CDB JSON中提取派系数据,构建运行时结构

你的核心需求是把每一行的FactionName和ReputationValue封装成独立的Faction字典,再存入Factions数组。之前的代码问题在于没有正确提取行内的具体字段,而且要注意原JSON结构的键名大小写(比如是Sheets不是sheets)。

正确的解析代码如下(基于Godot语法):

var FactionArray = []

# 遍历所有工作表,定位到"Factions"表
for sheet in content["Sheets"]:
    if sheet["name"] == "Factions":
        # 遍历表内每一行数据
        for line in sheet["lines"]:
            # 提取对应字段,封装为Faction字典
            var faction = {
                "Name": line["FactionName"],
                "Reputation": line["ReputationValue"]
            }
            FactionArray.push_back(faction)

关键说明:

  • 原JSON中Sheets是大写开头,必须严格匹配,否则会找不到目标工作表
  • 每个line本身就是包含FactionName和ReputationValue的字典,直接通过键名取值即可,不需要复杂的删除操作
  • 最终FactionArray里的每个元素都是你需要的{Name: "派系名", Reputation: 声望值}结构,方便运行时调用

二、将修改后的派系数据回写至CDB文件

要保存回原文件,需要把运行时的FactionArray还原成CDB要求的JSON结构,再覆盖写入文件。核心是保留原CDB的完整结构(比如columns、separators等字段),只更新lines部分:

# 先找到要更新的"Factions"工作表
var target_sheet = null
for sheet in content["Sheets"]:
    if sheet["name"] == "Factions":
        target_sheet = sheet
        break

if target_sheet:
    # 清空原有行数据
    target_sheet["lines"].clear()
    
    # 将运行时的Faction数据转换回CDB格式
    for faction in FactionArray:
        var new_line = {
            "FactionName": faction["Name"],
            "ReputationValue": faction["Reputation"]
        }
        target_sheet["lines"].push_back(new_line)
    
    # 将修改后的整个数据结构转为JSON字符串
    var updated_json = to_json(content)
    
    # 写入并覆盖原CDB文件
    var file = File.new()
    if file.open(FactionDB, File.WRITE):
        file.store_string(updated_json)
        file.close()
        print("派系数据保存成功!")
    else:
        print("错误:无法打开文件进行写入")

注意事项:

  • 必须保留原CDB的所有非lines字段(比如columns、compress等),否则CastleDB编辑器可能无法正常打开文件
  • 写入时使用File.WRITE模式,会直接覆盖原文件内容,建议操作前备份原文件
  • 如果你的声望值是数字类型,确保回写时不会变成字符串(Godot的to_json会自动保留类型,只要你运行时没修改类型就没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:22:45