繁体   English   中英

如何遍历json数组

[英]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;
}   

笔记:

  1. 来自JSON 规范

    JSON 建立在两种结构上:

    • 名称/值对的集合。 在各种语言中,这被实现为对象、记录、结构、字典、哈希表、键控列表或关联数组。
    • 值的有序列表。 在大多数语言中,这被实现为数组、向量、列表或序列。

    JSON 数组映射到JArray而 JSON 对象映射到JObject

  2. 我们如何...解析 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
    }

得到的所有值MapJProperty ,然后通过每个属性循环,您可以访问使用属性名prop.Name和使用值prop.Value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM