在JSON.NET中反序列化此对象

Ale*_*dru 1 .net c# json json.net

我有以下对象:

{
    "pickups": {
        "7": [
            5,
            8
        ],
        "10": [
            6,
            7,
            9
        ],
        "15": [
            1
        ],
        "20": [
            0,
            2
        ],
        "25": [
            3,
            4
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将每个拾取元素反序列化为以下对象:

public class Pickups {
    public Pickup[] pickups;
}

public class Pickup {
    public int Group; // This could be the 7, 10, 15, 20, 25, etc.
    public int[] Values; // If this was the "7" grouping, it would contain 5, 8.
}
Run Code Online (Sandbox Code Playgroud)

从数据中可以看出,执行此操作有点棘手.我一直在尝试使用JsonConverter来转换对象的一些自定义代码,但这是一场噩梦,我无法做到正确.我想知道是否有人知道将这种类型的对象转换为我需要的正确格式的最佳方法?

Nko*_*osi 6

虽然转换器是一个不错的选择,但您仍然可以反序列化Json并构造所需的对象图

var root = JsonConvert.DeserializeObject<RootObject>(json);
var pickups = new Pickups {
    pickups = root.pickups.Select(kvp =>
        new Pickup {
            Group = int.Parse(kvp.Key),
            Values = kvp.Value
        }
    ).ToArray()
};
Run Code Online (Sandbox Code Playgroud)

哪里

public class RootObject {
    public IDictionary<string, int[]> pickups { get; set; }
}
Run Code Online (Sandbox Code Playgroud)