簡體   English   中英

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

[英]Deserialize list of objects in C#

我使用JsonConvert序列化一個 object 並將其保存在數據庫中。
這是我保存在數據庫中的序列化字符串的示例:

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

現在,當我從數據庫中獲取這個字符串時,它有很多這樣的反斜杠:

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

因此,我無法Deserialize它。

.Replace("\\","")方法對此沒有任何影響。 我不知道為什么。

您必須使用JsonConvert.Deserialize方法。

您的json字符串包含在方括號([]) ,因此它被解釋為數組。 因此,您需要將其deserialize一個class type集合,例如我們稱其為MyClass

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

這是Deserialize方法。

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

反斜杠代表序列化對象。 您需要反序列化您的 List 對象。 您可以嘗試使用泛型:

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

在調試時查看 json 字符串時要小心。 在 Visual Studio 中,它需要將值格式化為字符串。 為此,它會添加 " 以便在實際值不包含它們時處理它。這就是替換不起作用的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM