使用JSON自定义空处理.净反序列化

本文关键字:反序列化 处理 JSON 自定义 使用 | 更新日期: 2023-09-27 17:49:18

我有以下JSON:

[
    {
      "ID": "Test1234",
      "Child": {
        "ID": "NULL"
      }
    },
    {
      "ID" : "Test1235",
      "Child": {
         "ID" : "Test1234"
      }
    }
]

我把它映射到下面的c#类:

[JsonObject]
public class MyExample
{
    string ID;
    MyExample Child;
}

它有两个对象来建模父/子关系。第一个对象Test1234应该没有Child (null)。相反,json.net(正确地)将Child反序列化为MyExample对象,其中ID为"NULL"。下面是我想要的行为:

var myObjects = JsonConvert.DeserializeObject<List<MyExample>>(jsonText);
Assert.AreEqual("Test1234", myObjects[0].ID);
Assert.IsNull(myObjects[0].Child);
Assert.AreEqual("Test1235", myObjects[1].ID);
Assert.AreEqual("Test1234", myObjects[1].child.ID);

是否有一个简单的方法来指定null处理属性?这是我正在使用的API中表示空值的默认方式,并且我有其他(相关)类都以这种方式工作。

使用JSON自定义空处理.净反序列化

您可以编写自定义代码来检测何时ID为NULL,并简单地将Child赋值为NULL。它非常简单,应该只有几行代码。像这样:

if (myObject.child.ID == NULL)
{
    myObject.child = NULL;
}