【发布时间】:2021-08-31 13:03:50
【问题描述】:
我需要通过 REST 发送(不包括其他一些敏感信息):
{"@Scope": "Local"}
类文件中我JsonProperty为Json.Net序列化:
[JsonProperty("@Scope")]
public string Scope { get; set; }
将要通过 WebRequest 发送的 json 消息放在一起时,我有
{@Scope = "Local"}
但运行后:
string jsonString = System.Text.Json.JsonSerializer.Serialize(message);
发出的消息是
{"Scope": "Local"}
出于某种原因,我认为 System.Text.Json 会获取 JsonProperty 属性,但显然应该有其他方式。
【问题讨论】:
-
这是使用 .net core 3.0 吗?如果是这样,试试
[JsonPropertyName("@Scope")]?例如见stackoverflow.com/a/58299628/15410 -
@不是 C# 标识符本身的有效字符;它用作转义序列以允许关键字用作标识符。所以写@Scope和写Scope的意思是一样的;你需要使用你通常用来覆盖序列化的任何东西来获得像文字这样的名字。 -
TFM - How to customize property names and values with System.Text.Json "要设置单个属性的名称,请使用
JsonPropertyName属性"
标签: c# json system.text.json