xunkong / KeqingNiuza

刻记牛杂店
MIT License
517 stars 53 forks source link

关于导入 UIGF Json 文件 uid 字段的问题 #75

Closed NahidaBuer closed 2 years ago

NahidaBuer commented 2 years ago

UIGF 2.0 标准中,有这样的描述:

导出的格式 以同值字段提取至上层的思想,我们拟定了以下json格式

{
"info" : {
"uid" : "000000000",
"lang" : "zh-cn",
...
},
"list" : [
{
"gacha_type": "000",
"item_id": "",
"count": "1",
"time": "yyyy-MM-dd HH:mm:ss",
"name": "以理服人",
"item_type": "武器",
"rank_type": "3",
"id": "1600099200004770203",
"uigf_gacha_type": "000",
},
...
]
}

于是,uid 和 lang 字段在 list 中并不应该是必须的。然而在这里的逻辑: https://github.com/Scighost/KeqingNiuza/blob/main/src/KeqingNiuza.Core/Wish/JsonImporter.cs#29 意味着,必须在导入的 Json 的每一条记录中都必须有 uid 字段,这也导致了目前(2.2.6 版本的本工具)无法成功导入遵守了 UIGF 规范的 Genshin Wish Export v0.8.1 导出的 Json 文件。

    "info": {
        "uid": "100000000",
        "lang": "zh-cn",
        "export_time": 1643219776065,
        "export_app": "genshin-wish-export",
        "export_app_version": "0.8.1",
        "uigf_version": "2.1"
    },
    "list": [
        {
            "gacha_type": "301",
            "time": "2020-11-01 18:35:47",
            "name": "黎明神剑",
            "item_type": "武器",
            "rank_type": "3",
            "id": "",
            "uigf_gacha_type": "301"
        },
        ...
    ]
}

于是,选择了类似格式的 Json 文件之后,在列表里看不到任何记录项。

导入截图

出于个人用途,想从 Genshin Wish Export 导入开服以来的抽卡记录到本工具,写了个简单的 Json 格式化 Python 脚本,能把当前版本前者导出的 Json 喂给后者。

鄙人实在有点菜,在 VS 里面跑不起来本项目,不然就自己改改试试了,不知道为什么 VS 始终认为 clone 下来的本项目的 .Net 版本是 4.x……

NahidaBuer commented 2 years ago

回复一下自己,不只是 uid 字段有问题,仅补上 uid 字段仍然会提示格式不正确,能力有限,不想看格式判断逻辑了,直接在脚本里粗暴补全了所有的字段,就这样吧。似乎刻晴牛杂遇到 id 缺失的记录就会报错?

Lightczx commented 2 years ago

https://github.com/Scighost/KeqingNiuza/blob/4973662463175ac90e3166d81b66b996fe836a3d/src/KeqingNiuza.Core/Wish/JsonImporter.cs#L38

Lightczx commented 2 years ago

多半是 System.Text.Json 某些实体特性 引起的问题

Lightczx commented 2 years ago

@CHxCOOH 可以提供一份记录用来测试么

NahidaBuer commented 2 years ago

@CHxCOOH 可以提供一份记录用来测试么

可以,我已把记录和截图一起上传到CHxCOOH/GitHubImages/Demos

Scighost commented 2 years ago

我测试没有问题

Lightczx commented 2 years ago

我测试完也是没有问题了