首页 > 解决方案 > 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);
}

有没有简单的方法来实现这一点?

标签: c#json

解决方案


您正在调用Addnull 对象,这就是您收到 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 以便在反序列化期间读取时如果 group 为 null 然后使用所需的对象进行初始化
  2. 在属性上使用支持字段,以便在反序列化期间如果集合为空,则使用所需对象初始化集合。

推荐阅读