在C#中反序列化JSON对象

时间:2017-01-26 11:46:35

标签: c# json web-services deserialization

我正在使用WebService并以这种方式反序列化对象:

var content = JsonConvert.DeserializeObject<Member>(result);

这是JSON

{
   "CREATE": [
   {
      "isValidMemberPassword": true,
      "member_eid": 13
   }],
   "DATE": "2017-01-26 11:25:20"
}

这些是反序列化的类:

public class Member
{
    public List<Create> Create { get; set; }
    public string DATE { get; set; }
}

public class Create
{
    public bool isValidMemberPassword { get; set; }
    public int member_eid { get; set; }
}

问题是我的Create对象没有使用收到的值创建。所有值均为null。正确创建了Member对象。我是C#的菜鸟。

2 个答案:

答案 0 :(得分:1)

首先,对于JSON转换,您的属性必须与JSON代码的属性相同。如果您有转换的麻烦,可以使用json2csharp.com

我发现JSON代码的属性不是正确的格式规则(camelcase中的属性名称)。要更正此问题,您可以使用属性JsonProperty和第一个参数JSON属性名称。请参阅以下代码:

public class Member
{
    [JsonProperty("CREATED")]
    public List<Create> Created { get; set; }

    [JsonProperty("DATE")]
    public string Date { get; set; }
}

public class Create
{
    [JsonProperty("isValidMemberPassword")]
    public bool IsValidMemberPassword { get; set; }

    [JsonProperty("member_eid")]
    public int MemberEid { get; set; }
}

答案 1 :(得分:0)

请使用下面提到的课程

public class CREATE
{
    public bool isValidMemberPassword { get; set; }
    public int member_eid { get; set; }
}

public class RootObject
{
    public List<CREATE> CREATE { get; set; }
    public string DATE { get; set; }
}