我有一个 JArray,其对象有两个属性。例如:
[
{"Prop1":"key1", "Prop2":"value1"},
{"Prop1":"key2", "Prop2":"value2"},
{"Prop1":"key3", "Prop2":"value3"}
]
而且我需要 C# 中的 KeyValuePair(或 Dictionary 无关紧要)结构,例如
key1-value1
key2-value2
key3-value3
Prop1 和 Prop2 的名称也可以更改,这意味着 JArray 可以有不同的 prop 名称,但对象中的属性数始终为 2。因此我需要将 JArray 反序列化为 List<KeyValuePair>
的通用方法。 .
最佳答案
给定一个 JArray
类型的变量 array
,您可以使用 extension 执行以下操作来自 System.Linq
的方法命名空间:
var pairs = array
// Cast array items from JToken to JObject.
// You could filter instead using `OfType<JObject>() if nulls might be present
.Cast<JObject>()
// Convert the first and second property values to a KeyValuePair
.Select(o => new KeyValuePair<string, string>((string)o.PropertyValues().ElementAtOrDefault(0),
(string)o.PropertyValues().ElementAtOrDefault(1)))
.ToList();
var dict = pairs.ToDictionary(p => p.Key, p => p.Value);
样本 fiddle
关于c# - 如何在 C# 中将 JArray 转换为 KeyValuePair 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43833899/