已解析的JSON对象的属性为null

时间:2013-06-04 11:37:20

标签: c# .net json json.net deserialization

我正在使用Json.NET反序列化以下JSON:

[
    {
        "id": 1234,
        "name": "Example",
        "coords": "[12:34]",
        "relationship": "ownCity"
    },
    {
        "id": 53,
        "name": "Another example",
        "coords": "[98:76]",
        "relationship": "ownCity"
    }
]

我试图将其解析为List。

List<City> cities = JsonConvert.DeserializeObject<List<City>>(json);

城市课程的定义:

public class City
{
    int id { get; set; }
    string name { get; set; }
    string coords { get; set; }
    string relationship { get; set; }
}

结果是两个City对象的列表,但它们的所有属性都为null(id为0)。

有人能告诉我我做错了吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

您的字段都标记为(默认情况下)为私有字段。 将它们更改为公共或受保护,它应该可以正常工作:

public class City
{
   public int id { get; set; }
   public string name { get; set; }
   public string coords { get; set; }
   public string relationship { get; set; }
}

答案 1 :(得分:1)

它适用于你

  • 您需要添加公共访问级别

默认情况下,类成员和结构成员的访问级别(包括嵌套类和结构)是私有的。

  • 或 您需要DataContractAttribute到类和DataMemberAttribute属性到要序列化的成员。由于没有[DataMember],您无法序列化非公共属性或字段

[DataContract]     公共类城市     {

 [DataMember]
public int id { get; set; }

  [DataMember]
  public string name { get; set; }

  [DataMember]
  public string coords { get; set; }

  [DataMember]
  public string relationship { get; set; }
}