c# - Json 将对象添加到空字段
问题描述
我想将对象添加到空字段
我有一个 json 文件“ FileXXX ”,它有一些变量和一个集合“ SomeList ”。这个“ SomeList ”有一个自己的集合“ Group ”,我想在其中插入一个集合,就像在“ 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.Ignore 因为我使用空值作为变量,如果应该显示“组”信息。
到目前为止,我所做的是创建一个完整的新 json 文件,将旧数据粘贴到其中,在特定条目处添加组并覆盖旧 json 文件。
所以基本上我正在寻找下面没有弹出空异常的代码。
if (FileXXX.Somelist[0].Group == null)
{
FileXXX.Somelist[0].Group.Add(myGroupObject);
}
有没有简单的方法来实现这一点?
解决方案
您正在调用Add
null 对象,这就是您收到 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);
如果您正在寻找其他方法,那么您可以探索
- 编写自己的 JsonConverter 以便在反序列化期间读取时如果 group 为 null 然后使用所需的对象进行初始化
- 在属性上使用支持字段,以便在反序列化期间如果集合为空,则使用所需对象初始化集合。
推荐阅读
- c - 跨多个文件的冲突类型的函数
- typescript - 输入接口 a 或接口 b,但不是两者的并集
- java - 是否有一个函数可以计算 Java 中每个循环的迭代次数?
- excel - 获取 IE 自动化错误“对象变量或未设置块变量”
- node.js - Express 路由器不等待 forEach 循环
- reactjs - Material-UI.com 自动完成样式
- javascript - 在解析 json 数据上放置小数位并在模态输入中显示
- excel - 您可以更改 AutoFilter 方法的条件吗?
- python - 在 DataFrame 中查找第二次出现的正则表达式
- linux - 如何在 WSL 中添加自定义起始目录