我正在尝试将序列化对象发布到 Web 服务。该服务要求将属性名称“context”和“type”格式化为“@context”和“@type”,否则它不会接受请求。Newtonsoft JSON.NET 正在从属性名称“上下文”和“类型”中删除“@”,我需要将它们传递到 JSON 中。有人可以帮忙吗?这是我正在使用的课程public class PotentialAction{ public string @context { get; set; } public string @type { get; set; } public string name { get; set; } public IList<string> target { get; set; } = new List<string>();}这是它被转换为的 JSON:{ "potentialAction": [ { "context": "http://schema.org", "type": "ViewAction", "name": "View in Portal", "target": [ "http://www.example.net" ] } ]}但这就是我需要将其序列化为:{ "potentialAction": [ { "@context": "http://schema.org", "@type": "ViewAction", "name": "View in Portal", "target": [ "http://www.example.net" ] } ]}
2 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
在 C# 中,@变量的前缀用于允许您使用保留字,例如@class. 所以它会被有效地忽略。要控制序列化的属性名称,您需要将JsonProperty属性添加到模型中:
public class PotentialAction
{
[JsonProperty("@context")]
public string @context { get; set; }
[JsonProperty("@type")]
public string @type { get; set; }
public string name { get; set; }
public IList<string> target { get; set; } = new List<string>();
}
慕森王
TA贡献1777条经验 获得超3个赞
您可以使用一些属性来定义字段名称应该是什么。
https://www.newtonsoft.com/json/help/html/SerializationAttributes.htm
你会像这样使用它: [JsonProperty(PropertyName = "@context")]
Public string context { get; set ; }
- 2 回答
- 0 关注
- 276 浏览
添加回答
举报
0/150
提交
取消