反序列化 Json 字典数组

Deserialize Json Array of Dictionary

我有一个字典数组,在序列化为 JSON 之后,我得到了这个字符串:

"[{"key1":"value1","key2":"value2"}]"

我想用这个 JSON 制作一个值列表,我该如何实现?

您的 JSON 有点奇怪,因为它是一个包含 1 个元素的列表,即 object/dictionary...我认为您在序列化方面犯了错误。

但是给你一个答案:这与所问的相反 here

这里有 System.Text.Json 和 Json.net 例子:

var d = System.Text.Json.JsonSerializer.Deserialize<List<Dictionary<string, string>>>(json);

var d2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string,string>>>(json);

然后您可以将列表索引器与 Dictionary.Values 一起使用

var values = d[0].Values

请注意 values 将是一个 Dictionary<string,string>.ValueCollection,而不是列表。但它仍然有一个枚举器。 编辑:这样你就可以调用 Linq 的 ToList().

将其序列化为字典列表后,您可以将其转换为列表:

var d = System.Text.Json.JsonSerializer.Deserialize<List<Dictionary<string, string>>>(json);
// or Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(json);

List<C> l = d
    .SelectMany(x  => x.Select(kvp => new C(Key: kvp.Key, Value: kvp.Value)))
    .ToList();

C 可能看起来像这样:

public record C(string Key, string Value);