使用 JObject 创建一个对象数组的语法是什么?

333*_*att 3 c# json azure-cosmosdb

我正在为 Cosmos DB(基于文档或 JSON 的 DB)创建一个数据库播种器。一些 C# 模型有一个属性 Config,它是 JSON,所以我一直在使用这种类型的代码来设置该属性:

Config = JObject.FromObject(new { })
Run Code Online (Sandbox Code Playgroud)

它的工作原理与在对象内实际设置属性一样:

Config = JObject.FromObject(new
{
  contextOptionSource = "$.domains.governmentEntityType_active"
}),
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何将 Config 设置为对象数组。我实际上尝试使用 C# 模型,认为 JObject 会像这样为我转换它们:

Config = JObject.FromObject(
  new List<Question>
  {
    new Question
    {
      Key = "contact",
      Label = "Contact Person",
      HelpText = "",
      Config = JObject.FromObject(new {}),
      Type = "text",
      ContextTarget = "$.data.contact"
    },
    new Question
    {
      Key = "company",
      Label = "Company Name",
      HelpText = "",
      Config = JObject.FromObject(new {}),
      Type = "text",
      ContextTarget = "$.data.company"
    }
  }),
Run Code Online (Sandbox Code Playgroud)

这编译好了,但是当我运行时,我得到一个运行时错误“对象序列化为数组。JObject 实例预期。”“我认为 JObject 应该将 C# 模型转换为 JSON 是错误的吗?如果它们必须是通用对象,那很好,但我无法获得正确的语法,即 FromObject 方法将接受此 Config 属性内的多个对象。

编辑:这是我正在尝试生成的 JSON:

Config = JObject.FromObject(new { })
Run Code Online (Sandbox Code Playgroud)

Str*_*low 5

尝试JTokenJArray

var Config = JToken.FromObject(
    new List<Question>
    {
        new Question
        {
            Key = "contact",
            Label = "Contact Person",
            HelpText = "",
            Config = JObject.FromObject(new {}),
            Type = "text",
            ContextTarget = "$.data.contact"
        },
        new Question
        {
            Key = "company",
            Label = "Company Name",
            HelpText = "",
            Config = JObject.FromObject(new {}),
            Type = "text",
            ContextTarget = "$.data.company"
        }
    }
    );

var result = Config.ToString();
Run Code Online (Sandbox Code Playgroud)

结果是:

[
{
    "Label": "Contact Person",
    "HelpText": "",
    "Type": "text",
    "ContextTarget": "$.data.contact",
    "Config": {},
    "Key": "contact"
},
{
    "Label": "Company Name",
    "HelpText": "",
    "Type": "text",
    "ContextTarget": "$.data.company",
    "Config": {},
    "Key": "company"
}
]
Run Code Online (Sandbox Code Playgroud)