如何将c#空列表序列化为JSON空数组

本文关键字:JSON 数组 序列化 列表 | 更新日期: 2023-09-27 18:02:43

我正在将我的代码从使用称为floatedPlugin的属性切换到使用称为floatedPlugins的属性(注意's')。我不需要floatedPlugin存在后,这段代码运行。现有的floatedPlugin值要么是对象,要么是null。如果是null,我想将floatedPlugins设置为空数组。如果floatedPlugin是一个对象,我想将floatedPlugins设置为一个仅包含该对象的数组。

foreach (var _case in context.Cases)
{
    dynamic data = JsonConvert.DeserializeObject(_case.Data);
    foreach (var row in data.myRows)
    {
        foreach (var plugin in row.plugins)
        {
            if (plugin.floatedPlugin == null)
            {
                 plugin.floatedPlugins = new List<dynamic>(); // Code breaks here
            }
            else
            {
                 plugin.floatedPlugins = new List<dynamic>(plugin.floatedPlugin);
            }
        }
    }
    _case.Data = JsonConvert.SerializeObject(data);
}

我得到的错误当我试图运行这个

Could not determine JSON object type for type System.Collections.Generic.List`1[System.Object].
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.ArgumentException: Could not determine JSON object type for type System.Collections.Generic.List`1[System.Object].

我需要做什么才能使floatedPlugins在结果序列化的JSON中序列化为[] ?

如何将c#空列表序列化为JSON空数组

您正在处理的dynamic值实际上是JObject。它知道如何自动将一些标准类型(如int s)转换为适当的JValue对象,但任何更复杂的类型都需要首先显式地转换为某种JToken

plugin.floatedPlugins = JArray.FromObject(new List<dynamic>());