我正在尝试从JObject创建一个.NET对象,但是我将Object的所有属性都作为默认值(对于字符串为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>();
但运行时的结果是默认值: Run time picture
我想知道为什么会这样,我该怎么做呢,
由于
答案 0 :(得分: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; }
}
如果公开你的主持人不是你的选择。考虑this SO answer中列出的其他选项。