使用ToObject方法反序列化Json会导致默认属性值

Avi*_*rda 5 .net c# json json.net

我试图从JObject创建一个.NET对象,但我得到Object的所有属性作为默认值(对于字符串为null,对于int等为0)

我正在创建一个简单的Jobject:

var jsonObject = new JObject();
jsonObject.Add("type", "Fiat");
jsonObject.Add("model", 500);
jsonObject.Add("color", "white");
Run Code Online (Sandbox Code Playgroud)

汽车类是:

public class Car
{
  string type {get;set;}
  int model {get ;set;}
  string color {get;set;}            
}
Run Code Online (Sandbox Code Playgroud)

反序列化在这里:

Car myCar = jsonObject.ToObject<Car>();
Run Code Online (Sandbox Code Playgroud)

但运行时的结果是默认值: 运行时图片

我想知道它为什么会发生,我该怎么做呢,

谢谢

Bru*_*cia 5

您尚未为属性定义访问修饰符.如果没有显式设置访问修饰符(例如:),则public protected internal private属性将是私有的.

Newtonsoft.Json需要公共设置器才能设置属性的值.

尝试:

public class Car
{
    public string type { get; set; }
    public int model { get; set; }
    public string color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果公开你的主持人不是你的选择.考虑本SO答案中列出的其他选项.