如何在提供对象类型时告诉JSON.NET将JArray反序列化为List <object>?

TN.*_*TN. 7 .net c# json json.net

我们有以下课程:

class Foo
{
    public object Any;
}
Run Code Online (Sandbox Code Playgroud)

该类接受该字段中的任何内容Any.

我打电话的时候:

JsonConvert.DeserializeObject<Foo>("{any: 5}")
Run Code Online (Sandbox Code Playgroud)

Any包含System.Int64.

但是,当我打电话时:

JsonConvert.DeserializeObject<Foo>("{any: [5]}")
Run Code Online (Sandbox Code Playgroud)

Any包含Newtonsoft.Json.Linq.JArray.

如何配置JSON.NET以便在这种情况下 Any包含List<object>

澄清:

可以有任何东西,我可以打电话:

JsonConvert.DeserializeObject<Foo>("{any: 'c'}")
Run Code Online (Sandbox Code Playgroud)

要么

JsonConvert.DeserializeObject<Foo>("{any: ['c', 5]}")
Run Code Online (Sandbox Code Playgroud)

更多说明:

我想以某种方式告诉JSON.NET(可能使用JsonSerializerSettings):

当您遇到objectJSON包含数组时,将其反序列化为(例如)List<object>.

Dan*_*ler 2

你的答案可能就在这里

你的[5]是一个数组。您所要做的就是将其投射到列表中。


您还可以创建自己的转换器,如此处所述