反序列化C#中的对象列表

时间:2017-04-14 17:02:05

标签: c# asp.net json asp.net-mvc serialization

我使用JsonConvert序列化对象并将其保存在数据库中。它是我保存在数据库中的序列化字符串样本:

"[{\"matId\":\"1\",\"value\":\"44\"},{\"matId\":\"2\",\"value\":\"55\"},{\"matId\":\"4\",\"value\":\"77\"}]"

现在当我从db获取这个字符串时,它有很多反斜杠:

Deserialize

因此我无法.Replace("\\","")

{{1}}方法对此没有任何影响。我不知道为什么。

2 个答案:

答案 0 :(得分:6)

您必须使用JsonConvert.Deserialize方法。

您的json字符串包含在方括号([])中,因此它被解释为数组。因此,您需要deserialize将其type收集到一个class,例如,我们将其称为MyClass

public class MyClass
{
    public int matId { get; set; }
    public int value { get; set; }
}

这是Deserialize方法。

var results=JsonConvert.DeserializeObject<List<MyClass>>(json);

答案 1 :(得分:1)

反斜杠表示序列化对象。 您需要反序列化List对象。 您可以尝试使用泛型:

public List<T> Deserialize<T>(string path)
{
   return JsonConvert.DeserializeObject<List<T>>(path);
}