JsonConvert.SerializeObject和空字符串的处理

时间:2014-04-02 18:02:49

标签: c# serialization json.net

我有一个从包含空字符串的Web服务返回的对象。该对象称为Docs,对象Docs.RowsList<List<string>>,然后在下面的代码中将其用作filteredRows。当我使用JsonConvert.SerializeObject时,它会删除每个具有空字符串的列。这些列很重要。

我尝试过这两种方法:

JsonConvert.SerializeObject(filteredRows,
    Formatting.Indented,
    new JsonSerializerSettings { });

JsonConvert.SerializeObject(filteredRows,
    Formatting.Indented,
    new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });

所有具有空字符串的列仍在删除。我该如何保留它们?

filteredRows也定义为List<List<string>>。我可以将其序列化为已定义的对象吗?

1 个答案:

答案 0 :(得分:0)

您能提供一个演示此问题的示例程序吗?像下面这样的简单示例似乎工作正常。序列化期间不会删除null和空字符串。可能是您的过滤过程实际上是删除了值吗?

class Program
{
    static void Main(string[] args)
    {
        List<List<string>> rows = new List<List<string>>
        {
            new List<string>
            {
                "A",
                null,
                ""
            },
            new List<string>
            {
                null,
                "B",
                ""
            },
            new List<string>
            {
                "",
                null,
                "C"
            }
        };

        string json = JsonConvert.SerializeObject(rows);
        Console.WriteLine(json);
    }
}

输出:

[["A",null,""],[null,"B",""],["",null,"C"]]