我有一个像波纹管这样的JSON数据
[{"Staffs":[5,10,12,14]},{"Staffs":[11,13,15,17]}]
并且我想从中提取价值并期待波纹数据
[5,10,12,14,11,13,15,17]
如何使用newtonsoft JSON做到这一点。
答案 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);
}
}
}