为类中可能存在也可能不存在的字符串数组属性声明"Nullable<string>[]"或"string[]?"?



我有一个JSON文件,如下所示:

[
{
"Id": 1,
"Size": "big",
"Order": 6
},
{
"Id": 2,
"Size": "small",
"Order": 4
},
{
"Id": 3,
"Size": "medium",
"Order": 2,
"chips": []
}
]

chips属性是一个数组,它可能出现在某个对象中,也可能不出现在该对象中(目前为null(。我应该这样声明json文件的类吗:

public class Settings
{ 
public int Id { get;}
public string Size { get;}
public int Order { get;}
public string[]? Chips { get;}
}

和?或者类似Nullable[]的属性?

简而言之:在这种情况下根本不需要Nullable<T>?

string[]是参考类型:

Console.WriteLine(typeof(string[]).IsValueType);

打印输出将是CCD_ 4。

因此,它可以是null,而不需要任何装饰。


返回您的样本。您还需要指定setter,以便能够反序列化给定的json片段:

public class Settings
{
public int Id { get; set; }
public string Size { get; set; }
public int Order { get; set; }
public string[] Chips { get; set; }
}

因为顶级实体不是对象,所以需要首先使用JArray解析它,然后通过ToObject(1(:将其转换为Settings

var json = "[rn  {rn    "Id": 1,rn    "Size": "big",rn    "Order": 6rn  },rn  {rn    "Id": 2,rn    "Size": "small",rn    "Order": 4rn  },rn  {rn    "Id": 3,rn    "Size": "medium",rn    "Order": 2,rn    "chips": []rn  }rn]";
var semiParsedData = JArray.Parse(json);
var settings = semiParsedData.ToObject<Settings[]>();

相关内容

最新更新