如何将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中序列化为[]
?
您正在处理的dynamic
值实际上是JObject
。它知道如何自动将一些标准类型(如int
s)转换为适当的JValue
对象,但任何更复杂的类型都需要首先显式地转换为某种JToken
。
plugin.floatedPlugins = JArray.FromObject(new List<dynamic>());