反序列化 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);
我有一个字典数组,在序列化为 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);