Json将一个对象添加到一个空字段中



我想向空字段添加一个对象

我有一个json文件">FileXXX";其具有一些变量和集合">SomeList";。这个">SomeList";具有集合">";我想在其中插入一个集合,就像">SomeList";。

{
"Name": "some name",
"Jear": 2021,
"SomeList": [
{
"ID": "XXXXXX",
"Something": "",
"Something else": 0,
"...": 0,
"Group": null
},
{
"ID": "YYYYYY",
"Something": "",
"Something else": 0,
"...": 0,
"Group": [
{
"Something": "",
"Something else": 0
}
]
},
... x entrys
]
}

我没有使用NullValueHandling。忽略,因为我使用null值作为变量,如果";应显示信息。

到目前为止,我所做的是创建一个完整的新json文件,将旧数据粘贴到其中,在特定条目处添加组,并覆盖旧json文件。

所以基本上,我正在寻找下面的代码,没有空异常弹出。

if (FileXXX.Somelist[0].Group == null)
{
FileXXX.Somelist[0].Group.Add(myGroupObject);
}

有没有简单的方法可以做到这一点?

您在null对象上调用Add,这就是您获得null ref异常的原因。如果为null,首先应该初始化集合并在其中添加对象。

if (FileXXX.Somelist[0].Group == null)
{
FileXXX.Somelist[0].Group = new List<YourGroupObjectType>() { myGroupObject };
}

以下是在集合中初始化和添加对象的其他方法

FileXXX.Somelist[0].Group = new List<YourGroupObjectType>();
FileXXX.Somelist[0].Group.Add(myGroupObject);

如果你正在寻找其他方法,那么你可以探索

  1. 编写自己的JsonConverter,以便在反序列化期间读取时,如果组为null,则使用所需对象初始化
  2. 在属性上使用backing字段,以便在反序列化期间如果集合为null,则使用所需对象初始化集合

最新更新