【发布时间】:2021-07-22 17:10:38
【问题描述】:
在一个消耗大量 api 数据的 C# 应用程序上工作,到目前为止我还没有遇到过关于数据反序列化的问题。
我有一个 200k+ 行的 json 文件,它是 90% 反序列化的
Json 是这样的
{
"missionRewards": { //[This needs to be the first dictionary<string, Planet> (see code below)]
"planet_name" : { //[This needs to be the second dictionary<string, Mission> (see code below)]
"mission_name": {
everything within the mission object is interpreted correctly, it contains 2 strings and 3 arrays of reward.
}
}
}
}
行星名称和任务名称是字典键,因为在实际的 json 文件中它们都有唯一的名称。 “地球、火星、金星等”
实际的 json 文件可以在这里找到。
http://drops.warframestat.us/data/all.json
这是我的反序列化类的重要部分
public class A
{
[JsonProperty("_id")]
public string Id;
[JsonProperty("itemName")]
public string ItemName;
[JsonProperty("rarity")]
public string Rarity;
[JsonProperty("chance")]
public double Chance;
[JsonProperty("stage")]
public string Stage;
}
public class B
{
[JsonProperty("_id")]
public string Id;
[JsonProperty("itemName")]
public string ItemName;
[JsonProperty("rarity")]
public string Rarity;
[JsonProperty("chance")]
public double Chance;
[JsonProperty("stage")]
public string Stage;
}
public class C
{
[JsonProperty("_id")]
public string Id;
[JsonProperty("itemName")]
public string ItemName;
[JsonProperty("rarity")]
public string Rarity;
[JsonProperty("chance")]
public double Chance;
[JsonProperty("stage")]
public string Stage;
}
public class Rewards
{
[JsonProperty("A")]
public List<A> A;
[JsonProperty("B")]
public List<B> B;
[JsonProperty("C")]
public List<C> C;
[JsonProperty("_id")]
public string Id;
[JsonProperty("itemName")]
public string ItemName;
[JsonProperty("rarity")]
public string Rarity;
[JsonProperty("chance")]
public double Chance;
[JsonProperty("rotation")]
public string Rotation;
}
public class Mission
{
[JsonProperty("gameMode")]
public string GameMode;
[JsonProperty("isEvent")]
public bool IsEvent;
[JsonProperty("rewards")]
public Rewards Rewards;
}
public class Planet
{
public Dictionary<string, Mission> Missions;
}
public class MissionRewards
{
public Dictionary<string, Planet> Planets;
}
到目前为止,我尝试在字典上声明一个 [JsonDictionary] 参数,并尝试使用对象列表、无类型对象字典,但我似乎无法工作,因为 json 反序列化程序无法识别任何一个对象作为字典。
我正在使用 Newtonsoft.JSON 进行操作。
关于如何解决我发现自己的情况的任何指示。基本上,我主要关心的是在对象被反序列化后将标识名称绑定到对象,而我不能使用列表来做到这一点。
【问题讨论】:
-
这是 json 类转换创建它的方式,但正如您所见,每个任务都被单独声明为自己的对象,这就是我宁愿拥有字典的原因。 pastebin.com/0KXLq3Bs
标签: c# json dictionary json.net