从C#</t>中的Json数组转换为List <t>或T []

时间:2014-12-11 09:24:45

标签: javascript asp.net-mvc deserialization json-deserialization

我有一个json数据:

"{\"list\":[{\"PlId\":1,\"PstId\":1,\"MonthlyValue\":\"00,00\"},{\"PlId\":2,\"PstId\":1,\"MonthlyValue\":\"00,00\"},{\"PlId\":3,\"PstId\":1,\"MonthlyValue\":\"00,00\"},{\"PlId\":4,\"PstId\":1,\"MonthlyValue\":\"00,00\"},{\"PlId\":5,\"PstId\":1,\"MonthlyValue\":\"00,00\"}]}"

我想将json数据转换为List但JsonConvert.Deserialize(jsonData)返回null。

[Serializable]
public class DecryptedMonthlyPremiumScale
{
    [DataMember]
    public int PlId { get; set; }

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

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

我尝试了这种方法:How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?

有什么问题? 感谢。

1 个答案:

答案 0 :(得分:1)

您需要创建一个包装类来正确反序列化:

[Serializable]
public class DecryptedMonthlyPremiumScale
{
    [DataMember]
    public int PlId { get; set; }

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

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

public class Root
{
    public IList<DecryptedMonthlyPremiumScale> list {get;set;}
}

var obj = JsonConvert<Root>(json);

另一种方法是使用JObject获取根元素,然后反序列化:

var parsed = JObject.Parse(json)["list"].ToObject<IList<DecryptedMonthlyPremiumScale>>();