我需要创建以下 JSON:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "The Adventures of Kira and Morrison",
"startDate": "2025-07-21T19:00-05:00",
"endDate": "2025-07-21T23:00-05:00",
所以我写了以下 C#
private MarkupString JsonLdEvent
{
get
{
dynamic data = new
{
@context = "https://schema.org",
@type = "Event",
name = Data?.Subject,
startDate = Data?.UnderlyingEvent?.StartDateTime.DateTimeOffset,
endDate = Data?.UnderlyingEvent?.EndDateTime.DateTimeOffset,
};
var json = JsonConvert.SerializeObject(data, Formatting.Indented);
return new MarkupString(json);
}
}
问题是生成的 JSON 没有"context": "https://schema.org"
。"@context": "https://schema.org"
有没有办法将属性设置为@context
?
更新:如果您遇到了这个确切的问题 - 需要创建 Schema.Org 对象 -有一个 .NET 库可以提供此功能(@David 的解决方案)。
当
@context
用作标识符时,@
仅表示“这不是关键字” - 即,您可以拥有一个名为new
、unsafe
、int
或类似名称的成员 -表示“在 上obj.@int
调用的成员”,否则为保留关键字。所以:这就是它不起作用的原因。int
obj
int
如果你确实需要动态成员(即结构不是固定的),那么也许可以这样:
或者正如@daremachine 在评论中所说:
[JsonProperty]
/[JsonPropertyName]
在常规 POCO 上。