精明的手套 · Matlab中,怎样能去除向量或矩阵中的Na ...· 1 年前 · |
鬼畜的小蝌蚪 · linux libreoffice 文档 ...· 1 年前 · |
求醉的胡萝卜 · 从 DAO 记录集中删除记录 | ...· 1 年前 · |
犯傻的手链 · java json添加元素-掘金· 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"
犯傻的手链 · java json添加元素-掘金 1 年前 |