C#JSON反序列化器返回空对象列表

时间:2018-02-03 15:58:14

标签: c# json deserialization

我正在尝试将json对象数组转换为C#列表,但我无法使其工作。目前,我已经完成了这个课程:

public class FineModel
{
    public String officer { get; internal set; }
    public String target { get; internal set; }
    public int amount { get; internal set; }
    public String reason { get; internal set; }
    public String date { get; internal set; }

    public FineModel() { }
}

现在,我有这个JSON,我想要反序列化,这似乎是正确形成的:

[  
   {  
      "officer":"Alessia Smith",
      "target":"Scott Turner",
      "amount":1800,
      "reason":"test",
      "date":"9/4/2017 3:32:04 AM"
   }
]

应该发挥魔力的C#系列是:

List<FineModel> removedFines = JsonConvert.DeserializeObject<List<FineModel>>(json);

它返回一个对象,但是当我尝试打印它的值时,它为amount属性返回0,为字符串返回空,就像我这样做。这可能有什么问题?

提前致谢!

2 个答案:

答案 0 :(得分:2)

从setter中删除内部,

public class RootObject
{
    public string officer { get; set; }
    public string target { get; set; }
    public int amount { get; set; }
    public string reason { get; set; }
    public string date { get; set; }
}

内部setter无法工作,因为从另一个dll调用

答案 1 :(得分:1)

只是为了使答案更加完整,请从设置器中删除内部或将 JsonProperty 属性添加到模型中。

public class FineModel
{
    [JsonProperty]
    public String officer { get; internal set; }
    [JsonProperty]
    public String target { get; internal set; }
    [JsonProperty]
    public int amount { get; internal set; }
    [JsonProperty]
    public String reason { get; internal set; }
    [JsonProperty]
    public String date { get; internal set; }

    public FineModel() { }
}