使用Newtonsoft JSON从JSON数组中提取数组元素

时间:2019-12-08 13:34:10

标签: c# json json.net

我有一个像波纹管这样的JSON数据

[{"Staffs":[5,10,12,14]},{"Staffs":[11,13,15,17]}]

并且我想从中提取价值并期待波纹数据

[5,10,12,14,11,13,15,17]

如何使用newtonsoft JSON做到这一点。

2 个答案:

答案 0 :(得分:5)

您可以先将JSON解析为JArray

using Newtonsoft.Json.Linq;

var array = JArray.Parse(yourJSONString);

然后,使用SelectMany将其展平并将其转换为List<int>

var result = array.SelectMany(x => x["Staffs"]).Values<int>().ToList();

答案 1 :(得分:0)

首先创建一个模型

class StaffsModel
{
    [JsonProperty("Staffs")]
    public int[] Staffs { get; set; }
}

如果我们考虑通过这样的对象创建json值

var staffsList = new List<StaffsModel>();
staffsList.Add(new StaffsModel { Staffs = new[] { 5, 10, 12, 14 } });
staffsList.Add(new StaffsModel { Staffs = new[] { 11, 13, 15, 17 } });

我们可以使用此方法序列化为数组

string json = JsonConvert.SerializeObject(staffsList);

输出为[{"Staffs":[5,10,12,14]},{"Staffs":[11,13,15,17]}]

最后添加到数字列表中

var data = JsonConvert.DeserializeObject<StaffsModel[]>(json);
if (data?.Length > 0)
{
    var listOfNumbers = new List<int>();
    foreach (var staff in data)
    {
        foreach (var number in staff.Staffs)
        {
             listOfNumbers.Add(number);
        }
    }
}