我们如何迭代Map
数组?
我的有效载荷看起来像这样:
{
"Record": "...bunch of hl7 data...",
"Map": [{ "DG1.2": "PatientDiag1" }, { "DG1.3": "PatientDiag2" }]
}
我们如何迭代和解析Map
数组的值?
我尝试了以下操作:
var blobObject = JObject.Parse(blob);
var map = blobObject["Map"]; //it's a JToken at this point
//now let's parse each key/value pair in the map:
foreach (var field in map)
{
var key = field.ToString();
var value = field[0].Value
}
"Map"
是JSON对象数组,因此首先需要遍历该数组,然后可以遍历每个对象的键/值对:
var blobObject = JObject.Parse(blob);
var map = blobObject["Map"]; //it's a JToken at this point
//now let's parse each key/value pair in the map:
foreach (var item in map.Cast<JObject>()) // Map is an array of objects so loop through the array, then loop through the key/value pairs of each object
{
foreach (var pair in item)
{
var key = pair.Key;
var value = pair.Value;
}
}
或者,如果您希望使用LINQ的SelectMany()
来使数组变平:
SelectMany()
注意:
来自foreach (var pair in map.Cast<JObject>().SelectMany(o => (IDictionary<string, JToken>)o))
{
var key = pair.Key;
var value = pair.Value;
}
JSON建立在两个结构上:
- 名称/值对的集合。在各种语言中,这是作为对象,记录,结构,字典,哈希表,键列表或关联数组实现的。
- 值的有序列表。在大多数语言中,这是通过数组,向量,列表或序列来实现的。
我们如何...解析Map数组的值?您不需要parse JArray
数组的值,它们已经被完全解析。您只需要使用JObject
来查询它们。
演示小提琴JObject
。