【发布时间】:2021-12-27 21:11:29
【问题描述】:
这是我收到的 JSON 字符串
{
"Date":"2021-11-16",
"Name":"Raj",
"BError":{
"code":"errorcode",
"details":"message"
},
"AStatus":true
}
我必须反序列化上面的 JSON 字符串
我在下面给出了带有 JSON 注释的类详细信息
public class Demo
{
[JsonProperty("Date")]
public DateTime? Date { get; set; }
pulic string Name { get; set; }
[JsonProperty("B-Error")]
public BError BError { get; set; }
[JsonProperty("A-Status")]
public bool AStatus { get; set; }
}
public class BError
{
public string code { get; set; }
public string details { get; set; }
}
我写反序列化的代码是
var responseJson = JsonConvert.DeserializeObject(input_JSON_string).ToString();
Demo d = JsonConvert.DeserializeObject<Demo>(responseJson);
此代码将 input_JSON_string 转换为对象,但不是所有字段。 “Date”和“Name”字段正在转换,但“B-Error”和“A-Status”字段将值存储为 NULL。
如何反序列化所有字段?
【问题讨论】:
-
您不需要在上面定义
JsonProperty- 它通常在您的属性名称不同于 与JSON等时使用。 -并且基于上述,他们不... -
@EdSF 你这么说.. 但是人们会忘记在里面放一个camelCasing转换器,所以所有的 serialized json 都以 PascalCase 结尾;好哇。 JsonProperty 在所有方面的一个好处是序列化部分要记住的事情少了一件(而且很容易产生 json-to-csharp 类型转换器)
-
如下所述,JSON 和代码不匹配 - 您必须更改代码(只需删除属性)或将连字符添加到 JSON 中的 A-Error/B-Error。
-
@CaiusJard 当然,但那将意味着它们不同因此......
-
我想 JsonPropping 的另一个好处是你可以随意重构..
标签: c# json .net serialization json-deserialization