繁体   English   中英

使用JSON.NET反序列化的自定义null处理

[英]Custom null handling with JSON.NET deserialization

我有以下JSON:

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

我将此映射到以下C#类:

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

它有两个对象,它们为父/子关系建模。 第一个对象Test1234不应有Childnull )。 取而代之的是,json.net(正确地)将Child反序列化为ID为“ NULL”的MyExample对象。 这是我想要的行为:

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);

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

您也许可以编写自定义代码来检测ID为NULL的时间,只需将Child分配为NULL。 这非常简单,只需几行代码。 像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM