c#从现有的对象数组创建一个新列表[关闭]
Posted
技术标签:
【中文标题】c#从现有的对象数组创建一个新列表[关闭]【英文标题】:c# create a new list from existing array of objects [closed] 【发布时间】:2022-01-05 23:16:28 【问题描述】:我有以下对象数组。
"result": [
“maxTry: 17,
"minTry”: 10,
"details": [
“firstName”: “Sam”,
,
"firstName”: ”Julio”,
],
"aggr": [
“Abc”,
],
"zone": “D3”
,
"aggr": [
"Abc",
],
"zone": “C3”
,
"aggr": [
"Abc",
],
"zone": “B2”
,
"aggr": [
"Abc",
],
"zone": “T1”
,
]
我想从上述对象中创建一个新列表。新列表将首先检查对象中是否存在maxTry
或minTry
节点。只有当maxTry
和minTry
都不存在于一个对象中时,才将zone
添加到新的列表数组中。新列表将如下所示。
["C3", "B2", "T1"]
【问题讨论】:
反序列化 json 并循环通过集合并在循环中使用 if 和 else 编写逻辑。 【参考方案1】:定义JSON
对象的结构。
将JSON
字符串反序列化为对象。
按您的条件过滤。
输出结果。
可以将record
的定义替换为class
,如果你的C#版本不是很新,代码如下:
using System;
using System.Linq;
using System.Text.Json;
class Program
public record JsonObject(Result[] Result);
public record Detail(string FirstName);
public record Result(int? MaxTry, int? MinTry, Detail[] Details, string[] Aggr, string Zone);
public static void Main(string[] _)
var option = new JsonSerializerOptions AllowTrailingCommas = true, PropertyNameCaseInsensitive = true ;
var jsonObject = JsonSerializer.Deserialize<JsonObject>(Json, option);
var newList = jsonObject.Result.Where(x => !x.MaxTry.HasValue && !x.MinTry.HasValue).Select(x => x.Zone).ToList();
Console.WriteLine(string.Join(" ", newList));
private static string Json = @"""result"": [
""maxTry"": 17,
""minTry"": 10,
""details"": [
""firstName"": ""Sam"",
,
""firstName"": ""Julio"",
],
""aggr"": [
""Abc"",
],
""zone"": ""D3""
,
""aggr"": [
""Abc"",
],
""zone"": ""C3""
,
""aggr"": [
""Abc"",
],
""zone"": ""B2""
,
""aggr"": [
""Abc"",
],
""zone"": ""T1""
,
]";
【讨论】:
以上是关于c#从现有的对象数组创建一个新列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章