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)
尝试JToken或JArray。
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)
| 归档时间: |
|
| 查看次数: |
4877 次 |
| 最近记录: |