【发布时间】:2021-12-29 14:03:03
【问题描述】:
您好,我正在使用 NewtonSoft Json.Net 反序列化我的 json 数据。我通常反序列化 json 字符串,但我想检查所有不存在的键。
例如这里是一个json数据。
{
"Hp": 100,
"PlayerInfo": {
"Atk": 10,
"Def": 20
},
"Mp": 100
}
而且我有一个可以匹配上述数据的结构。
[Serializable]
public struct CharaData
{
public int Hp;
[Serializable]
public struct PlayerInfoData
{
public int Atk;
public int Def;
public int Spd;
}
PlayerInfoData PlayerInfo;
}
我会像这样对它进行去色化。
JsonConvert.DeserializeObject<CharaData>(jsonStr);
-
json 数据中有
Mp键,但结构中没有。 -
在
PlayerInfoData中,json 数据中没有Spd键,但在结构中有一个Spd字段。- 嗯... Spd 字段似乎初始化为默认值 0,它可能是一个错误。
所以我想检查哪些键不在结构中。 以及哪些结构字段因为不存在而没有反序列化。
我会尽我所能防止这些发生,但是如果在从json数据反序列化的过程中缺少某些键,我会登录查找为什么没有反序列化的问题 完全成功。
[Error][CharaData::Mp key not exist in json string]
[Error][CharaData::PlayerInfo::Spd field not exist in struct]
似乎在 JsonConvert 类中没有任何方法可以检查它。 我看到了
[JsonProperty(Required = Required.Always)]
但这不会检查所有的键。 这个需要写自定义的json转换器吗?
【问题讨论】: