使用ToObject方法反序列化Json会产生默认的属性值



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

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

var jsonObject = new JObject();
jsonObject.Add("type", "Fiat");
jsonObject.Add("model", 500);
jsonObject.Add("color", "white");

汽车等级为:

public class Car
{
  string type {get;set;}
  int model {get ;set;}
  string color {get;set;}            
}

反序列化在这里:

Car myCar = jsonObject.ToObject<Car>();

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

,我想知道为什么会发生这种情况,以及我应该如何正确处理

感谢

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

Json需要一个公共设置器来设置您的财产的价值。

尝试:

public class Car
{
    public string type { get; set; }
    public int model { get; set; }
    public string color { get; set; }
}

如果公开你的二传手不是你的选择。请考虑本SO答案中列出的其他选项。

相关内容

  • 没有找到相关文章

最新更新