玩足球的烈马 · Functional analysis ...· 4 月前 · |
鬼畜的太阳 · 定时任务创建ShardingDataSour ...· 5 月前 · |
爱热闹的松鼠 · 解决缺少程序集引用或其不正确的错误 - ...· 7 月前 · |
温文尔雅的鸵鸟 · jquery点击其它地方隐藏自身_jq ...· 11 月前 · |
风流倜傥的跑步鞋 · python文件路径有空格_mob649e8 ...· 1 年前 · |
当我尝试用以下方式序列化我的对象时,
JsonConvert.SerializeObject
出现了问题:
var statementOfAccount = new
main = new
@xm = "https://api-path.com",
RESTHeader = new
Responsibility = "Responsibility ",
RespApplication = "AR",
NLSLanguage = "AMERICAN"
};
给我:
{
"main": {
"xm": "https://api-path.com",
"RESTHeader": {
"Responsibility": "Responsibility",
"RespApplication": "AR",
"NLSLanguage": "AMERICAN"
}
因此,基本上是从@xm中删除@,请注意,我不能更改属性的名称,因此需要一个按原样序列化它的解决方案。
发布于 2022-08-15 11:24:28
一种方法是创建自定义类,而不是使用匿名。
public class Custom
[JsonProperty["@xm"]
public string @xm {get; set;}
}
由于您的匿名对象属性是已知的,并且不会导致任何属性重叠,所以另一种方法是在序列化后替换json字符串。
json=json.Replace("xm:","@xm:");
发布于 2022-08-15 12:13:16
这解决了我使用JsonPropertyName的问题,但是使用了JsonSerializer.Serialize而不是JsonConvert.SerializeObject,所以问题是我使用了一个匿名对象,就像大多数人建议的那样,但是使用JsonPropertyName只对JsonSerializer.Serialize起作用,它不适用于JsonConvert.SerializeObject
解决办法:
public class Main
[JsonPropertyName("@xm")]
public string @xm { get; set; }
public RESTHeader RESTHeader { get; set; }
public class RESTHeader
public string Responsibility { get; set; }
public string RespApplication { get; set; }
public string NLSLanguage { get; set; }
public class Root
public Main main { get; set; }
var statementOfAccount = new Root
main = new Main
@xm = "https://api-path",
RESTHeader = new RESTHeader
Responsibility = "Responsibility ",
RespApplication = "AR",
NLSLanguage = "AMERICAN"