[英]how to iterate through json array
我们如何遍历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()
将数组展平:
foreach (var pair in map.SelectMany(o => (IDictionary<string, JToken>)o))
{
var key = pair.Key;
var value = pair.Value;
}
笔记:
来自JSON 规范
JSON 建立在两种结构上:
- 名称/值对的集合。 在各种语言中,这被实现为对象、记录、结构、字典、哈希表、键控列表或关联数组。
- 值的有序列表。 在大多数语言中,这被实现为数组、向量、列表或序列。
我们如何...解析 Map 数组的值? 您不需要解析Map
数组的值,它们已经被完全解析。 您只需要使用LINQ to JSON查询它们。
演示小提琴在这里。
var blobObject = JObject.Parse(blob);
var map = blobObject["Map"];
var values = map.Values().OfType<JProperty>();
foreach (JProperty prop in values)
{
Console.WriteLine(prop.Name); // property name
Console.WriteLine(prop.Value);// property value
}
得到的所有值Map
键JProperty
,然后通过每个属性循环,您可以访问使用属性名prop.Name
和使用值prop.Value
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.