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

use*_*973 4 c# asp.net asp.net-mvc serialization json

我使用JsonConvert序列化对象并将其保存在数据库中.这是我保存在数据库中的序列化字符串示例:

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

现在,当我从db获取此字符串时,它有很多反斜杠,如下所示:

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

因此我不能Deserialize.

.Replace("\\","")方法对此没有任何影响.我不知道为什么.

Mih*_*nut 6

你必须使用JsonConvert.Deserialize方法.

您的json字符串包含在方括号内([]),因此它被解释为数组.因此,你需要deserialize它来type一个集合class,例如让我们把它MyClass.

public class MyClass
{
    public int matId { get; set; }
    public int value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是Deserialize方法.

var results=JsonConvert.DeserializeObject<List<MyClass>>(json);
Run Code Online (Sandbox Code Playgroud)

  • 当我反序列化时,出现错误,“无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“我的类型”,因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。 (3认同)